我遇到了MSBuild的依赖关系问题。我在解决方案中为Microsoft.Tpl.Dataflow添加了一个NuGet包到项目。这会导致解决方案中引用第一个项目的网站项目的构建失败。获得正确的运行时版本似乎存在问题。Msbuild无法通过间接引用System.Runtime构建网站项目
这是我在用MSBuild构建解决方案时遇到的许多错误之一。
C:\ SRC \ MyWebsite.metaproj:警告MSB3268:主要参考 “C:\ SRC \项目\ ReferencedProject \ BIN \调试\ ReferencedProject.dll” 无法得到解决,因为它有一个间接的依赖于 框架程序集“System.Runtime,Version = 4.0.0.0,Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a”,这在目前的目标框架中无法解析。 ” .NETFramework,版本= V4.5" 。要解决 此问题,请删除引用 “C:\ src \ projects \ ReferencedProject \ bin \ Debug \ ReferencedProject.dll” 或将您的应用程序重定向到包含 “System.Runtime,Version = 4.0的框架版本。 0.0,文化=中立, PublicKeyToken = b03f5f7f11d50a3a“。
令人困惑的是,解决方案在Visual Studio中良好地构建。此外,解决方案中的所有其他项目都只是构建失败的网站项目。
我已经试过
- 更改为网站到4.0的目标框架(这是目前4.5)。
- 添加集的引用System.Runtime.dll版本4.0.0.0
我仍然不能得到它来构建。我怎样才能解决这个问题?
感谢您分享。 – frattaro
这也发生在我们.net 4.7。我想补充一点,这只发生在我们在构建服务器上使用msbuild命令行时,而不是在visual studio中。虽然这个解决方案也可以工作,因为4.7也有Facades目录,所以比复制系统文件要好得多,因为系统文件必须在每个构建服务器上完成。 – madamission
如果有人想更深入地尝试以正确的方式进行尝试,或者验证将其报告给Microsoft,我'认为'有一个名为TargetFrameworkDirectories的基础msbuild参数缺少该路径。至于如何使用aspnet_compiler在那里得到它,我不确定,因为我不知道你是否可以传递参数。至于现在我将使用不太理想的复制文件的解决方案。 – madamission