2012-04-04 239 views
7

当建立在没有安装SDK的机器上的web项目,你会得到这样的警告:如何摆脱的MSBuild警告MSB3644

警告MSB3644:为框架 参考组件”。 NETFramework,Version = v4.0“找不到。要解决此问题,请为此框架版本安装 SDK或定位套件,或将您的 应用重定向到您安装了SDK 或定位套件的框架版本。请注意,程序集将从全局程序集缓存(GAC)中解析出 ,并将用于替代 引用程序集。因此,您的程序集可能不正确 针对您打算的框架。

显然,摆脱警告的一种方法是安装SDK。但是,在这种情况下,我只是想从构建输出中取消这个警告(这几乎是无害的),而不用以任何其他方式改变机器的状态。

我试着通过/ p:NoWarn = 3644到msbuild(基于其他帖子,如how can i suppress all compiler and code analysis warnings from msbuild at the command line?),但没有任何效果。

+0

这个SO帖子解决了同样的问题,即使这并不明显从标题: http://stackoverflow.com/questions/17220615/where-can-i-download-the-net-4-5- multitargeting-pack-for-my-build-server – 2015-08-19 20:28:29

回答

3

NoWarn适用于由CscVbc任务引发的编译警告。

MSB *警告是核心MSBuild警告。 为了抑制MSB3644警告传递一个明确的TargetFrameworkMoniker

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

可能的输入列表可以发现here

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 

在MSBuild的4.5有一个新的标志 - IgnoreVersionForFrameworkReferences可能来方便对这些警告。

+0

感谢您的回答。我只是试了一下,不幸的是它似乎没有工作。在将/p:TargetFrameworkMoniker=".NETFramework,Version=v4.0添加到msbuild命令行后,我仍然得到完全相同的警告。 :( – 2012-04-04 17:45:00

+0

您是否尝试过传递其他版本?或者您需要引用'Profile = Client' – KMoraz 2012-04-04 19:08:11

+0

“客户端”本身似乎无效(“FrameworkName不能少于两个组件或多于三个组件”)。是这个标志告诉msbuild假设他们的SDK安装了哪些目标库,在机器上没有SDK的情况下,它可能没有太大的作用 – 2012-04-04 22:40:39