Warnung: Alle Projekte, die auf MyProject.csproj verweisen, müssen das Nuget-Paket Microsoft.Bcl.Build installieren

90

Ich habe eine ASP.NET MVC 4-App, die in VS 2012 entwickelt wurde. Die App besteht aus einem Hauptprojekt (MyProject), einem Unit-Test-Projekt (MyProject.Tests), einem Azure-Bereitstellungsprojekt (MyProject.Azure) und einigen anderen Allzweck-Bibliotheksprojekte.

Wenn ich mit der rechten Maustaste auf die Lösung oder das Hauptprojekt klicke und NuGet-Pakete verwalten auswähle, werden einige Microsoft-Updates angezeigt, die anscheinend im letzten Monat oder so verfügbar wurden. Wenn ich auf die Schaltfläche Alle aktualisieren klicke, werden die Updates anscheinend ohne offensichtliche Probleme installiert, aber wenn ich die Lösung erstelle, wird diese Fehlermeldung ZWEIMAL angezeigt:

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

Ok, ich habe zwei Projekte, die auf MyProject verweisen: MyProject.Tests und MyProject.Azure. Ich kann mit der rechten Maustaste auf MyProject.Tests klicken, ManageNuGet-Pakete auswählen und Microsoft.Bcl.Build hinzufügen. Damit wird eine der beiden Warnungen beseitigt. Aber VS gibt mir keine Option NuGet Pakete für das MyProject.Azure Projekt zu verwalten .

Wie füge ich das Microsoft.Bcl.Build-Paket zum Azure-Bereitstellungsprojekt hinzu?

BEARBEITEN:

Dank Benutzer Seegang , ich weiß jetzt , dass ein Microsoft Connect Problem für dieses Problem wurde geöffnet hier .

Bob.at.Indigo.Health
quelle
2
Vielen Dank für den Hinweis auf das Verbindungsproblem. Dies ist ein ärgerliches Problem.
Paul Keister
1
Im Zusammenhang mit der Warnung beim Erstellen des Bereitstellungsprojekts gibt es auch einen Fehler, der beim Veröffentlichen des Projekts eine falsche Warnung verursacht . Der publikationsbedingte Fehler wird auch in Connect gemeldet . Ich kenne keine Problemumgehung.
Edward Brey
3
Das gleiche Problem tritt bei WiX-Projekten auf, die Verweise auf andere Projekte enthalten (zum Zwecke der Ernte der Projektleistung, auch bekannt als "Wärme"). Es macht für ein WiX-Installationsprojekt überhaupt keinen Sinn, NuGet-Pakete zu installieren! Argh !!
Jaans
1
Der Link zum Verbindungsproblem gibt jetzt 404 connect.microsoft.com/VisualStudio/feedback/details/789839/… zurück
Ryan Gates

Antworten:

54

Wenn Sie auf die Warnung doppelklicken, erhalten Sie Anweisungen zum Deaktivieren der Warnung.

Es ist sicher, Projektreferenzen von Projekten zu deaktivieren, die Nuget noch nicht unterstützen.

Siehe den folgenden fett gedruckten Teil, der von Microsoft.Bcl.Build.targets kopiert wurde.

BclBuildValidateNugetPackageReferences

Dieses Ziel kann für eine Projektreferenz deaktiviert werden, indem SkipValidatePackageReferences = true für die Referenz festgelegt wird:

<ProjectReference Include="..\pcl\pcl.csproj">
  <Project>{664a9e98-fac7-4567-a046-0dde95fddb48}</Project>
  <Name>pcl</Name>
  <Properties>SkipValidatePackageReferences=true</Properties>
</ProjectReference>
TheESJ
quelle
4
Arthur, können Sie versuchen, den Metadatenwert AdditionalPropertes anstelle von Eigenschaften festzulegen?
TheESJ
5
@TheESJ Ich hatte dieses Problem mit einem WiX-Projekt und es sieht so aus, als würde das Festlegen von AdditionalProperties anstelle von Eigenschaften funktionieren. Ich bin daran interessiert zu wissen warum
lc.
3
Dies funktioniert nur zum Erstellen der Lösung. Wenn Sie jedoch "Ausführen" mit dem Azure-Projekt als Startprojekt verwenden, werden die Warnungen erneut angezeigt.
Eoleary
2
Arbeiten Sie nicht einmal am Build. VS 2015 Community Edition.
Artyom
2
Hat in VS2015 Professional nicht funktioniert. Ich habe das gleiche Problem beim Hinzufügen dieser Zeile.
Aclalex
63

Die Antwort von TheESJ ist richtig, aber der Wortlaut war mir nicht klar. Da ich die Antwort nicht kommentieren kann, werde ich hier weitere Details bereitstellen. Insbesondere hatte ich dieses Problem mit einem Azure- Projekt und die folgende Problemumgehung war erforderlich, damit die Warnung nicht mehr angezeigt wird:

Wenn Sie in VisualStudio auf die Warnung doppelklicken, werden Sie zum Ziel BclBuildValidateNugetPackageReferences in der Datei Microsoft.BclBuild.targets weitergeleitet. Über dem eigentlichen Zielelement sollte sich ein großer Kommentarblock befinden, in dem über das Deaktivieren der Projektreferenzprüfungen gesprochen wird. Da Azure-Projekte keine Bibliotheksreferenzen haben können, können diese Azure-Projekte die Anforderungen dieses bestimmten Build-Ziels nicht erfüllen.

Die Lösung? Deaktivieren Sie die Referenzprüfung im Azure-Projekt, da keine Nuget-Paketreferenz hinzugefügt werden kann.

BEISPIEL

Angenommen , wir haben zwei Projekte: MyAzureProject.ccproj, das auf MyProject.csproj verweist . Folge diesen Schritten:

  1. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf "MyAzureProject" und wählen Sie "Projektdatei bearbeiten".
  2. Suchen Sie den Projektverweis auf "MyProject". Es sollte ungefähr so ​​aussehen:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
    </ProjectReference>
    
  3. Fügen Sie das folgende Element in das ProjectReference-Element ein:

      <Properties>SkipValidatePackageReferences=true</Properties>
    
  4. Ihre Projektreferenz sollte nun folgendermaßen aussehen:

    <ProjectReference Include="..\MyProject\MyProject.csproj">
      <Name>MyProject</Name>
      <Project>{1d99490e-d140-4897-9890-238e673a5864}</Project>
      ...
      <Properties>SkipValidatePackageReferences=true</Properties>
    </ProjectReference>
    
  5. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf "MyAzureProject" und wählen Sie "Projekt neu laden".

Sie sollten jetzt in der Lage sein, neu zu erstellen, und der Fehler sollte behoben sein.

AggieEric
quelle
17
In meiner Version von VS muss ich zuerst mit der rechten Maustaste klicken und "Projekt entladen", bevor ich mit der rechten Maustaste klicken kann, um die Projektdatei zu bearbeiten
pius
2
Meinten Sie MyAzureProject.ccprojeher als MyAzureProject.csproj?
Edward Brey
Dies funktioniert nur, wenn ich der referenzierten Projektdatei * .csproj '<Properties> SkipValidatePackageReferences = true </ Properties>' hinzufüge. Nur das Bearbeiten von * .ccproj funktioniert nicht.
Alexey
1
@pius Es ist eine kleine Funktion, aber es gibt eine Kontextmenüoption "Projektdatei bearbeiten" unter "Power Commands" in Productivity Power Tools , die für mehrere Editionen von VS verfügbar ist. Das Projekt wird entladen und die Projektdatei mit einem Klick für Sie geöffnet.
Jeff
16

Ich hatte das gleiche Problem und versuchte, Microsoft.Bcl.Build.targets zu aktualisieren. das hat nicht geholfen.

Nach einigen Untersuchungen wurde festgestellt, dass die .csproj-Datei des Azure Service-Projekts so geändert werden muss, dass sie enthält <Properties>SkipValidatePackageReferences=true</Properties>.

Dies war aus der Antwort von @TheESJ nicht ersichtlich und entschied sich daher, eine separate Antwort zu veröffentlichen. Vielen Dank an @TheESJ.

Santosh
quelle
2

Ich bin mehrmals auf dieses Problem gestoßen, und die Properties-Methode funktioniert zwar, aber bei einem Wix-Projekt musste ich stattdessen Folgendes tun:

<AdditionalProperties>SkipValidatePackageReferences=true</AdditionalProperties>

Bei Verwendung des Eigenschaften-XML-Knotens wurde ein neuer Fehler angezeigt:

Die OutputPath-Eigenschaft ist für das Projekt 'MyInstallerProject.csproj' nicht festgelegt. Stellen Sie sicher, dass Sie für dieses Projekt eine gültige Kombination aus Konfiguration und Plattform angegeben haben. Konfiguration = 'Debug' Plattform = 'x86'. Dieser Fehler kann auch auftreten, wenn ein anderes Projekt versucht, einem Projekt-zu-Projekt-Verweis auf dieses Projekt zu folgen, dieses Projekt entladen wurde oder nicht in der Lösung enthalten ist und das referenzierende Projekt nicht mit demselben oder einem gleichwertigen Projekt erstellt wird Konfiguration oder Plattform.

ozz
quelle