avviso: tutti i progetti che fanno riferimento a MyProject.csproj devono installare il pacchetto nuget Microsoft.Bcl.Build


90

Ho un'app ASP.NET MVC 4 sviluppata in VS 2012. L'app è composta da un progetto principale (MyProject), un progetto di unit test (MyProject.Tests), un progetto di distribuzione di Azure (MyProject.Azure) e un paio di progetti bibliotecari generici.

Quando faccio clic con il pulsante destro del mouse sulla soluzione o sul progetto principale e seleziono Gestisci pacchetti NuGet, vedo una serie di aggiornamenti Microsoft che apparentemente sono diventati disponibili nell'ultimo mese o giù di lì. Se clicco sul pulsante Aggiorna tutto, apparentemente gli aggiornamenti vengono installati senza problemi evidenti, ma quando creo la soluzione ottengo questo messaggio di errore DUE VOLTE:

warning : All projects referencing MyProject.csproj must install nuget package Microsoft.Bcl.Build

Ok, quindi ho due progetti che fanno riferimento a MyProject: MyProject.Tests e MyProject.Azure. Posso fare clic con il pulsante destro del mouse su MyProject.Tests, selezionare ManageNuGet Packages e aggiungere Microsoft.Bcl.Build. Questo elimina uno dei due avvertimenti. Ma VS non mi offre un'opzione per gestire i pacchetti NuGet per il progetto MyProject.Azure .

Come si aggiunge il pacchetto Microsoft.Bcl.Build al progetto di distribuzione di Azure?

MODIFICARE:

Grazie all'aumento degli utenti , ora so che un problema di Microsoft Connect per questo problema è stato aperto qui .


2
Grazie per il riferimento al problema di connessione, questo è un problema fastidioso.
Paul Keister

1
In relazione all'avviso durante la creazione del progetto di distribuzione, c'è anche un bug che causa un avviso falso durante la pubblicazione del progetto. Il bug relativo alla pubblicazione viene segnalato anche su Connect . Non conosco una soluzione alternativa.
Edward Brey

3
Lo stesso problema mi succede per i progetti WiX che hanno riferimenti ad altri progetti (allo scopo di raccogliere l'output del progetto aka. "Calore"). Non ha alcun senso per un progetto di installazione WiX installare pacchetti NuGet! Argh !!
Jaans

1
Il collegamento al problema di connessione ora restituisce 404 connect.microsoft.com/VisualStudio/feedback/details/789839/…
Ryan Gates

Risposte:


54

Se fai doppio clic sull'avviso, vengono fornite le istruzioni per disabilitare l'avviso.

È sicuro disabilitare i riferimenti di progetto da progetti che non supportano ancora Nuget.

Vedere la parte sottostante in grassetto copiata da Microsoft.Bcl.Build.targets.

BclBuildValidateNugetPackageReferences

Questa destinazione può essere disabilitata per un riferimento al progetto impostando SkipValidatePackageReferences = true per il riferimento:

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>

4
Arthur, puoi provare a impostare il valore dei metadati AdditionalPropertes invece di Properties?
TheESJ

5
@TheESJ Ho riscontrato questo problema con un progetto WiX e sembra che l'impostazione di AdditionalProperties invece di Properties funzioni. Mi interessa sapere perché però
lc.

3
Funziona solo per la creazione della soluzione, ma quando si utilizza effettivamente "Esegui" con il progetto Azure come progetto di avvio, verranno nuovamente visualizzati gli avvisi.
eoleary

2
Non lavorare nemmeno su build. VS 2015 Community Edition.
Artyom

2
Non ha funzionato in VS2015 Professional. Ho lo stesso problema aggiungendo questa riga.
aclalex

63

La risposta fornita da TheESJ è corretta, tuttavia la formulazione non mi era chiara. Poiché non posso commentare la risposta, fornirò maggiori dettagli qui. In particolare, stavo riscontrando questo problema con un progetto Azure ed è stata richiesta la seguente soluzione alternativa per far scomparire l'avviso:

Quando fai doppio clic sull'avviso in VisualStudio, verrai indirizzato alla destinazione BclBuildValidateNugetPackageReferences nel file Microsoft.BclBuild.targets. Sopra l'elemento di destinazione effettivo, dovresti trovare un ampio blocco di commenti che parla della disabilitazione dei controlli di riferimento del progetto. Poiché i progetti di Azure non possono avere riferimenti a libreria, è impossibile per quei progetti di Azure soddisfare i requisiti di questa particolare destinazione di compilazione.

La soluzione? Disabilitare il controllo dei riferimenti dal progetto Azure poiché è impossibile aggiungere effettivamente un riferimento al pacchetto nuget.

ESEMPIO

Quindi, supponiamo di avere due progetti: MyAzureProject.ccproj che fa riferimento a MyProject.csproj . Segui questi passi:

  1. Fare clic con il pulsante destro del mouse su "MyAzureProject" in Esplora soluzioni e selezionare "Modifica file di progetto".
  2. Trova il riferimento del progetto a "MyProject". Dovrebbe assomigliare a:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. Aggiungi il seguente elemento all'interno dell'elemento ProjectReference:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. Il tuo riferimento al progetto dovrebbe ora assomigliare a questo:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. Fare clic con il pulsante destro del mouse su "MyAzureProject" in Esplora soluzioni e scegliere "Ricarica progetto".

Ora dovresti essere in grado di ricostruire e l'errore dovrebbe essere sparito.


17
Nella mia versione di VS devo prima fare clic con il pulsante destro del mouse e "Scarica progetto" prima di poter fare clic con il pulsante destro del mouse per modificare il file di progetto
pius

2
Intendevi MyAzureProject.ccprojpiuttosto che MyAzureProject.csproj?
Edward Brey

Funziona solo se aggiungo "<Properties> SkipValidatePackageReferences = true </Properties>" al file * .csproj del progetto di riferimento. La semplice modifica di * .ccproj non funziona.
alexey

1
@pius È una piccola funzionalità, ma c'è un'opzione del menu contestuale "Modifica file di progetto" sotto "Comandi di alimentazione" in Produttività Power Tools , disponibile per diverse edizioni di VS. Scaricherà il progetto e aprirà il file del progetto per te con un clic.
Jeff

16

Ho riscontrato lo stesso problema e stavo cercando di aggiornare Microsoft.Bcl.Build.targets; che non ha aiutato.

Dopo alcune indagini è emerso che il file .csproj del progetto del servizio di Azure deve essere modificato per includere <Properties>SkipValidatePackageReferences=true</Properties>.

Questo non era evidente dalla risposta di @TheESJ e quindi ha deciso di pubblicare una risposta separata. Grazie a @TheESJ.


2

Ho riscontrato questo problema diverse volte e il metodo Proprietà funziona davvero, ma quando ho a che fare con un progetto Wix, ho dovuto fare quanto segue:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Quando ho utilizzato il nodo Proprietà Xml, ho ricevuto un nuovo errore:

La proprietà OutputPath non è impostata per il progetto "MyInstallerProject.csproj". Verifica di aver specificato una combinazione valida di Configurazione e Piattaforma per questo progetto. Configurazione = Piattaforma "Debug" = "x86". Questo errore può anche apparire se qualche altro progetto sta tentando di seguire un riferimento da progetto a progetto a questo progetto, questo progetto è stato scaricato o non è incluso nella soluzione e il progetto di riferimento non viene compilato utilizzando lo stesso o un equivalente Configurazione o piattaforma.

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.