Msbuild 无法通过间接引用 System.Runtime 构建网站项目

Msbuild fails building website project with an indirect reference to System.Runtime

我 运行 遇到了 MSBuild 的依赖问题。我为 Microsoft.Tpl.Dataflow 添加了一个 NuGet 包到我的解决方案中的一个项目。这会导致引用第一个项目的解决方案中的网站项目构建失败。获取正确的运行时版本似乎有问题。

这是我在使用 MSBuild 构建解决方案时遇到的众多错误之一。

C:\src\MyWebsite.metaproj : warning MSB3268: The primary reference "C:\src\projects\ReferencedProject\bin\Debug\ReferencedProject.dll" could not be resolved because it has an indirect dependency on the framework assembly "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" which could not be resolved in the currently targeted framework. ".NETFramework,Version=v4.5". To resolve this problem, either remove the reference "C:\src\projects\ReferencedProject\bin\Debug\ReferencedProject.dll" or retarget your application to a framework version which contains "System.Runtime, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".

令人困惑的是解决方案在 Visual Studio 中构建良好。此外,解决方案构建中的所有其他项目——只有网站项目失败了。

我试过了

我仍然无法构建它。我该如何解决这个问题?

原来 aspnet_compiler.exe(由 msbuild 调用)不在

的 Facade 目录中查找库

C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.5\Facade

因此,解决方案中的网站项目无法编译。

我从 this blog post. 中发现了这一点,正如那里提到的那样,为了解决这个问题,我将 DLL 从 Facade 目录复制到 v4.5 目录中,一切正常。

老实说,这是一个不太理想的解决方案。