【问题标题】:MSBuild uses wrong framework versionMSBuild 使用了错误的框架版本
【发布时间】:2018-08-12 16:51:34
【问题描述】:

我正在制作一个 MSBuild 文件,我需要在其中使用 Microsoft.Build.Tasks.v4.0.dll,问题是 MSBuild 无法找到此文件...它找不到它,因为 MSBuildToolsPath 指向在 .Net 框架的错误版本中...为什么?我该如何阻止这种情况发生?为什么不使用编译它的 MSBuild 版本来进行此测试?

我有以下简单的目标文件(我保存为 MSBuildTest.targets)来演示我看到的问题

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <Target Name="Default">
        <Message Text="$(MSBuildToolsPath)" />
    </Target>
</Project>

C:\Test> C:\Windows\Microsoft.NET\Framework\v4.0.30319\MSBuild MSBuildTest.targets

Microsoft (R) Build Engine 版本 4.7.3062.0 [Microsoft .NET 框架,版本 4.0.30319.42000] 版权所有 (C) 微软公司。保留所有权利。

构建于 2018 年 12 月 8 日 17:46:07 开始。 节点 1 上的项目“MSBuildTest.targets”(默认目标)。 默认值:

C:\windows\Microsoft.NET\Framework\v2.0.50727

完成构建项目“MSBuildTest.targets”(默认目标)。

构建成功。 0 个警告 0 个错误

经过时间 00:00:00.07

那么当我使用 MSBuild v4.0.30319 执行时,为什么 MSBuildToolsPath 指向 v2.0.50727

我确实做了一点挖掘,在注册表编辑器下,我有这个键

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0

...用这个值...

MSBuildToolsPath = C:\Windows\Microsoft.NET\Framework64\v4.0.30319\

这快把我逼疯了,有什么帮助吗??

【问题讨论】:

  • “MSBuild.targets”并不是每个人的机器上都有。如果你想要一个答案,让它在任何地方都可以重现。
  • 我在问题中提供了“MSBuild.targets”的全部内容。我会修改以明确说明这是唯一的文件。

标签: .net msbuild


【解决方案1】:

MSBuildTest.targets 的完整内容已发布在问题中。

修改目标文件并如下设置 ToolsVersion="4.0" 会产生正确的输出,如下所示

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
    <Target Name="Default">
        <Message Text="$(MSBuildToolsPath)" />
    </Target>
</Project>

Microsoft (R) Build Engine 版本 4.7.3062.0 [Microsoft .NET 框架,版本 4.0.30319.42000] 版权所有 (C) 微软公司。保留所有权利。

构建于 2018 年 8 月 17 日 12:17:06 开始。 节点 1 上的项目“C:\test\MSBuildTest.targets”(默认目标)。 默认值:

C:\Windows\Microsoft.NET\Framework\v4.0.30319

完成构建项目“C:\test\MSBuildTest.targets”(默认目标)。

我认为问题在于,在使用特定版本的 MSBuild 进行构建时,我希望 MSBuildToolsPath 会根据我使用的 MSBuild 版本进行设置。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 2011-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多