Impossibile applicare le proprietà di pubblicazione per l'elemento X


90

Ogni volta che eseguiamo una build nella nostra soluzione principale, riceviamo il seguente avviso:

Impossibile applicare le proprietà di pubblicazione per l'elemento "microsoft.visualstudio.qualitytools.unittestframework".

Qualcuno ha visto qualcosa di simile prima? Qualche idea su come risolvere questo problema? Succede su tutte le nostre macchine sviluppatore e anche sul nostro server di compilazione TFS. Tuttavia, appare solo in modalità Debug.

Risposte:


166

Sembra che il problema sia correlato a ClickOnce. Vai al progetto, fai clic destro su di esso e fai clic su proprietà. Vai alla scheda Pubblica e fai clic su File dell'applicazione. Seleziona la casella di controllo "Mostra tutti i file" e scorri l'elenco dei file. Alla fine, ti imbatterai nel file che ha un punto esclamativo giallo su di esso. Questo file è orfano e deve essere rimosso. Fare clic con il tasto destro sul file e dovrebbe esserci un'opzione di rimozione.

Ora crea la soluzione e l'avviso dovrebbe essere sparito.


14
Sono due volte che ho cercato su Google il problema e ho trovato questa risposta. Alla fine imparerò. : p
— Nick Spreitzer

4
Show all filesè la chiave qui.
— MEMark

5
@ NickSpreitzer Terza volta per me. Questa volta sono stato persino sorpreso dal mio stesso commento.
— MEMark

Puoi anche aggiornare il tuo file csproj occupandoti della sezione "PublishFile". Ovviamente questo deve essere fatto con molta attenzione.
— Jerome

3

La risposta più votata è perfetta così com'è, ma quelli di noi che hanno a che fare con esplosioni più grandi possono trarre vantaggio da questa risposta alternativa. Descrive una correzione analoga a livello di file.

L'avviso è causato da un elemento come questo:

<PublishFile Include="THIS IS USUALLY SOME IMAGINARY DLL">
  <Visible>False</Visible>
  <Group>
  </Group>
  <TargetPath>
  </TargetPath>
  <PublishState>Exclude</PublishState>
  <IncludeHash>True</IncludeHash>
  <FileType>Assembly</FileType>
</PublishFile>

... nel file di progetto (.csproj) che emette l'avviso. Notare il PublishState "Exclude"; questo elemento dice "per favore non pubblicare la DLL immaginaria"; questa è ovviamente un'istruzione inutile se non è presente alcuna DLL di questo tipo al momento della pubblicazione, ma causa anche l'avviso perché il processo di pubblicazione non può valutare l'identità del file.

È possibile rimuovere l'intero PublishFileelemento per ogni elemento di distribuzione menzionato negli avvisi, a condizione che PublishState abbia "Exclude". Non rimuovere meccanicamente ogni elemento con PublishState "Exclude", perché se non ci fosse alcun avviso, il file è probabilmente disponibile al momento della pubblicazione e potrebbe finire per essere pubblicato, il che sarebbe una modifica del prodotto indesiderata purché tu lo desiderassi sbarazzarsi dell'avvertimento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.