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.