2013-11-21 4 views
12

Ich arbeite an einem Projekt, das nuget verwendet, aber nicht Paketwiederherstellung verwendet. (Dies ist eine Entscheidung, die außerhalb meiner Kontrolle liegt, daher sind alle Antworten, die das Aktivieren der Paketwiederherstellung betreffen, keine, die ich verwenden kann.)Nicht Paketwiederherstellung verwenden, aber immer noch "muss nuget Paket Microsoft.Bcl.Build installieren"

Eine Handvoll Projekte in der Lösung (4 von a insgesamt 34, ein Projekt WinJS App Store, zwei gewöhnlichen .NET-Klassenbibliothek, und einer meiner Azure Cloud-Projekte) berichten diese berüchtigte Warnung:

...packages\Microsoft.Bcl.Build.1.0.13\tools\Microsoft.Bcl.Build.targets(225,5): warning : All projects referencing Valhalla.Consumer.Core.csproj must install nuget package Microsoft.Bcl.Build. For more information, see http://go.microsoft.com/fwlink/?LinkID=317569.

diese Verbindung geht davon aus, dass ich mich wenden werden wollen Paketwiederherstellung auf. Das gilt auch für alle anderen Ratschläge, die ich bisher zu diesem Thema gefunden habe.

Ich habe versucht, die Paketwiederherstellung unter Optionen -> Paket-Manager -> Allgemeine Einstellungen zu deaktivieren. Das hilft nicht (und selbst wenn es so wäre, wäre es unerwünscht - ich benutze die Paketwiederherstellung in allem anderen, an dem ich arbeite).

Ich verstehe nicht wirklich, warum ich das in einer Lösung bekomme, die Paketwiederherstellung nicht verwendet. Wie ich es verstehe, ist der ganze Punkt des Pakets, das es verlangt, Paketwiederherstellung zu unterstützen. In einer Lösung, in der Paketwiederherstellung nicht verwendet wird, scheint es daher seltsam, dass dieses Paket vorhanden ist.

Es scheint jedoch, dass bestimmte andere nugget-Pakete dazu führen, dass Sie davon abhängig sind. Ich habe ein Windows Runtime Component-Projekt, das Microsoft.Bcl verwendet, ein Nugget-Paket, das aus irgendeinem Grund eine Abhängigkeit von Microsoft.Bcl.Build hat. (Visual Studio schien das Microsoft.Bcl-Paket hinzuzufügen, als ich das Projekt erstellte. Vermutlich ist es notwendig.) Andere Projekte scheinen über die HTTP-Clientbibliotheken eine Abhängigkeit von Microsoft.Bcl.Build zu erhalten.

Offenbar scheinen bestimmte gängige nuget-Pakete eine Abhängigkeit von Microsoft.Bcl.Build zu erzwingen, unabhängig davon, ob Sie die Paketwiederherstellung verwenden oder nicht.

Das wäre in Ordnung, wenn Sie die Warnung beseitigen könnten, indem Sie allen Projekten, die diese Warnung erhalten, das entsprechende Paket hinzufügen. Aber die ärgerliche Sache ist, dass, selbst wenn ich das Microsoft.Bcl.Build Paket den verbrauchenden Komponenten hinzufüge (z. B. meine WinJS Window Store App), bekomme ich immer noch diese Warnung! (So ​​beschwert es sich weiter, dass ich das nugget-Paket installieren muss, auch nachdem ich es installiert habe.)

Weiß jemand, wie man diese Warnung in dieser Situation beseitigt? Zu tun, was es von mir verlangt, scheint nicht ausreichend zu sein. Was fehlt?

+1

Haben Sie versucht, die SkipValidatePackageReferences Eigenschaft mit in das Projekt wie in der vorgeschlagenen Microsoft.Bcl.Build.targets-Datei? –

+0

Das wird zwar los, aber wird es nicht auch legitime Warnungen verhindern? Wenn Projekt U das Projekt P verwendet, sollte U alle die gleichen nugget-Pakete wie P haben. Normalerweise wird nuget prüfen und Ihnen sagen, ob Ihnen etwas fehlt, aber diese Einstellung deaktiviert diese Überprüfung. Ich möchte Warnungen erhalten, wenn ich wirklich ein Paket vermisse, aber keine Warnungen über 'Microsoft.Bcl.Build 'bekomme, wenn ich tatsächlich einen Hinweis darauf habe. –

+0

Weiß nicht, ob die Paketwiederherstellung aktiviert ist OOTB in v2.7 + von NuGet ist jede Verwendung (Know zilch von 'Microsoft.Bcl.Build') –

Antwort

7

Ich hatte das gleiche Problem. Das Aktualisieren des Microsoft.Bcl.Build-Pakets von 1.0.13 auf 1.0.14 hat mein Problem gelöst.

+0

Ich musste VS Versionen –

+0

aktualisieren Ich bin bereits auf 1.0.14 mit vs 2013 Community Update 4, und ich habe die Warnung bekommen. Was soll ich machen ? – Julian50

+0

@FrankSposaro welche Version hat installiert? – Julian50

4

Wir hatten vor kurzem das gleiche Problem. Mit Nuget 2.8, BCL Build 1.0.14, BCL 1.1.9, hatten wir ein Projekt A mit BCL-Build, das von einem anderen Projekt B referenziert wurde. Kurzgeschichte: Projekt B Compilation gab den erwähnten Fehler obwohl die gepackten waren.

hinzugefügt. Die Lösung bestand darin, die Pakete zu entfernen und sie erneut hinzuzufügen. Wir haben das sowohl für Projekt A als auch für B getan.

Ich glaube, die Ursache des Problems war ein Missverhältnis in den Versionen. Das ursprüngliche Projekt, auf das BCL 1.1.8 referenziert wurde (die neueste Version, als es erstellt wurde), war, während Projekt B automatisch den neueren BCL 1.1.9 verwendete.

Ich bin nicht sicher, ob das relevant ist, aber beim ersten Mal haben wir Pakete mit dem Projekt-> NuGet-Paket-Manager hinzugefügt, und beim 2. Mal haben wir die NuGet-Konsole (Tools-> Nuget-> Konsole) benutzt.

Das Entfernen, einen deutlichen Unterschied in der csproj Projekt B. die folgenden Zeilen wurden hinzugefügt verursacht add:

<Import Project="..\..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets" Condition="Exists('..\..\..\packages\Microsoft.Bcl.Build.1.0.14\tools\Microsoft.Bcl.Build.targets')" /> 

Verwandte Themen