2012-04-04 5 views
7

Wenn auf einer Maschine mit einem Web-Projekt erstellen, die nicht das SDK installiert ist, können Sie diese Warnung erhalten:Wie von msbuild Warnung loszuwerden MSB3644

Warnung MSB3644: Die Referenz Baugruppen für Rahmen “. NETFramework, Version = v4.0 "wurden nicht gefunden. Um dies zu beheben, installieren Sie das SDK oder das Targeting Pack für diese Framework-Version, oder richten Sie Ihre -Anwendung auf eine Version des Frameworks um, für das Sie das SDK oder das Targeting Pack installiert haben. Beachten Sie, dass Baugruppen vom Global Assembly Cache (GAC) aufgelöst werden und anstelle von Referenzbaugruppen verwendet werden. Daher ist Ihre Assembly möglicherweise nicht korrekt Ziel für das Framework, das Sie beabsichtigen.

Offensichtlich ist eine Möglichkeit, die Warnung loszuwerden, die Installation des SDK. In diesem Fall möchte ich jedoch diese Warnung (die meistens harmlos ist) von der Build-Ausgabe unterdrücken, ohne den Zustand der Maschine auf andere Weise zu ändern.

Ich versuchte Passing/p: NoWarn = 3644 zu Msbuild (basierend auf anderen Beiträge wie how can i suppress all compiler and code analysis warnings from msbuild at the command line?), aber das hatte keine Auswirkungen.

+0

Diese SO Post adressiert das gleiche Problem, obwohl das nicht offensichtlich aus dem Titel ist: http://stackoverflow.com/questions/17220615/where-can-i-download-the-net-4-5- Multitargeting-Pack-für-meinen-Build-Server –

Antwort

3

NoWarn gilt für Kompilierungswarnungen, die von den Tasks Csc und Vbc ausgelöst werden.

MSB * Warnungen sind Kern MSBuild Warnungen. Zur Unterdrückung MSB3644 Warnung eine explizite TargetFrameworkMoniker passieren:

msbuild your.csproj /t:Rebuild /p:TargetFrameworkMoniker=".NETFramework,Version=v4.0" 

Die Liste der möglichen Eingaben können here gefunden werden.

v1.1.4322 
v2.0.50727 
Client 
v4.0 
v4.0.30319 
.NET Framework, Version=v4.0, Profile=Client 
.NET Framework, Version=v4.0 
.NET Framework, Version=v4.0.1, Profile=Client 
.NET Framework, Version=v4.0.1 
.NET Framework, Version=v4.0.2, Profile=Client 
.NET Framework, Version=v4.0.2 
.NET Framework, Version=v4.0.3, Profile=Client 
.NET Framework, Version=v4.0.3 
.NET Framework, Version=v4.5 

In MSBuild 4.5 gibt es eine neue Fahne - IgnoreVersionForFrameworkReferences, die auf diese Warnungen als nützlich erweisen könnten.

+0

Danke für Ihre Antwort. Ich habe es gerade ausprobiert und leider scheint es nicht zu funktionieren. Ich bekomme immer noch genau die gleiche Warnung, nachdem ich /p:TargetFrameworkMoniker=".NETFramework,Version=v4.0 "zur msbuild-Befehlszeile hinzugefügt habe. :( –

+0

Haben Sie versucht, andere Versionen zu übergeben? Oder benötigen Sie Referenzen auf 'Profil = Client ' – KMoraz

+0

' Client 'scheint allein ungültig zu sein (" FrameworkName darf nicht weniger als zwei Komponenten oder mehr als drei Komponenten haben ") ist, dass dieses Flag msbuild anweist, welche Zielbibliotheken verwendet werden sollen, vorausgesetzt, ihr SDK ist installiert. Ohne SDK auf dem Rechner kann es sein, dass es nicht viel macht. –

Verwandte Themen