【问题标题】:How to get rid of msbuild warning MSB3644如何摆脱 msbuild 警告 MSB3644
【发布时间】:2012-04-04 06:33:29
【问题描述】:

在未安装 SDK 的机器上构建 Web 项目时,您会收到以下警告:

警告 MSB3644:框架的参考程序集 未找到“.NETFramework,Version=v4.0”。要解决此问题,请安装 此框架版本的 SDK 或 Targeting Pack 或重新定位您的 应用到您拥有 SDK 的框架版本 或已安装目标包。请注意,程序集将被解析 来自全局程序集缓存 (GAC) 并将用于代替 参考程序集。因此您的组装可能不正确 针对您想要的框架。

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

我尝试将 /p:NoWarn=3644 传递给 msbuild(基于 how can i suppress all compiler and code analysis warnings from msbuild at the command line? 等其他帖子),但没有任何效果。

【问题讨论】:

标签: .net .net-4.0 msbuild msbuild-4.0


【解决方案1】:

NoWarn 适用于Csc 和Vbc 任务抛出的编译警告。

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 可能会在出现这些警告时派上用场。

【讨论】:

  • 感谢您的回答。我刚刚尝试过,不幸的是它似乎不起作用。将 /p:TargetFrameworkMoniker=".NETFramework,Version=v4.0" 添加到 msbuild 命令行后,我仍然收到完全相同的警告。 :(
  • 你尝试过其他版本吗?或者您可能需要参考Profile=Client
  • 'Client' 本身似乎无效(“FrameworkName 不能少于两个组件或多于三个组件”)。我的猜测是,这个标志告诉 msbuild 使用哪些目标库,假设他们的 SDK 已安装。机器上没有SDK,可能做不了多少。
  • 嗯,刚找到这个页面,显然不可能:social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/…。它说“MSBuild 会抛出带有 MSB 前缀的警告。目前,我们无法抑制 MSBuild 警告”
  • 该线程与 MSBuild 4.0 无关。上面我的意思是.NET Framework, Version=v4.0, Profile=Client 不是客户本身。对于这个属性抑制了确切的警告。
猜你喜欢
  • 2017-01-25
  • 1970-01-01
  • 2010-10-23
  • 2016-02-04
  • 2021-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多