为什么MSB3245没有失败?

时间:2016-03-04 16:28:42

标签: visual-studio visual-studio-2013 msbuild

我遇到的情况是我有一个缺少引用的解决方案(显示感叹号)但是构建成功并带有消息:

  

C:\ Program Files   (86)\的MSBuild \ 12.0 \ BIN \ Microsoft.Common.CurrentVersion.targets(1697,5):   警告MSB3245:无法解析此引用。找不到   程序集“EntityFramework”。检查以确保装配存在   在磁盘上。如果您的代码需要此引用,您可能会得到   编译错误。

这非常令人担忧,因为我希望使构建失败

是否有理由将MSB3245作为警告?

1 个答案:

答案 0 :(得分:1)

您看到的警告来自MSBuild的ResolveAssemblyReferences目标。它的工作是根据项目XML中给出的信息确定引用程序集的完整路径。例如,ResolveAssemblyReferences在全局程序集缓存(GAC)中找到类似<Reference Include="System.Xml" />的引用,并将DLL的完整路径传递给编译器。

如果无法确定引用程序集的完整路径,则不会将引用传递给编译器。如果您的实际代码都不依赖于引用,那么编译将成功,构建将继续。

您不能拥有任何实际依赖于传递给编译器的EntityFramework的代码。