c# - 将解决方案更新到 .NET 4.7.2 时 MSBuild 失败

标签 c# .net msbuild .net-4.7.2

我正在更新解决方案以使用 .NET 4.7.2 并遇到问题。

我可以在开发机器上构建和运行项目,但 TeamCity 不会。

在 TeamCity 构建步骤中,我将/p:TargetFrameworkVersion:v4.7.2 添加到 MSBuild 步骤。

其中一个项目以 netstandard 2.0 为目标,MSBuild 给了我一个错误,我应该在那里添加 .NET Framework 4.7.2。我将 .NET Framework 4.7.2 添加为目标,但没有任何效果。 这是构建日志中的错误:

[NETSdkError] C:\Program Files\dotnet\sdk\2.1.402\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.TargetFrameworkInference.targets(150, 5): error NETSDK1045: The current .NET SDK does not support targeting .NET Standard 4.7.2. Either target .NET Standard 2.0 or lower, or use a version of the .NET SDK that supports .NET Standard 4.7.2.

这很奇怪,因为没有 .NET Standard 4.7.2,但我认为这只是错误消息中的拼写错误。

代理上安装了 MSBuild 工具 2017 和 .NET 4.7.2 目标包。

知道这里出了什么问题吗?可能是额外的 MSBuild 参数是问题所在? 失败项目的项目文件如下所示:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net472;netstandard2.0</TargetFrameworks>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Newtonsoft.Json" Version="10.0.3" />
    <PackageReference Include="Autofac" Version="4.6.1" />
    <PackageReference Include="System.Configuration.ConfigurationManager" Version="4.4.1" />
    <PackageReference Include="System.Net.Http" Version="4.3.3" />
  </ItemGroup>
  <ItemGroup>
    <Reference Include="SomeLibrary">
      <HintPath>..\packages\SomeLibrary.1.0.4\lib\net461\SomeLibrary.dll</HintPath>
    </Reference>
    <ProjectReference Include="..\ProjectName.Core\ProjectName.Core.csproj" />
    <ProjectReference Include="..\ProjectName.Domain\ProjectName.Domain.csproj" />
    <ProjectReference Include="..\ProjectName.Web\ProjectName.Web.csproj" />
  </ItemGroup>
</Project>

当我尝试使用相同的参数在本地运行 MSBuild 时 - 它失败了,但出现了完全不同的错误,一些关于非法语法和 C#7 语言功能的错误。通过 Rider 构建解决方案效果很好。

最佳答案

如果您使用多目标项目,请改用 /p:TargetFramework=net472

TargetFrameworkVersion 只会更改所用框架的版本,而不是 TargetFramework 值或构建中其他地方使用的 TargetFrameworkMoniker。因此,没有版本为 4.7.2 的 .NET Standard 目标框架导致您的构建问题。

请注意,像这样设置全局属性可能仅在构建中的所有项目都支持它时才有效,因此在包含可能支持或不支持它的多个项目的解决方案上使用它时要小心。

关于c# - 将解决方案更新到 .NET 4.7.2 时 MSBuild 失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54650961/

相关文章:

c# - C# 是全英文的吗?

c# - 如何使用 C# 代码从 iso 文件运行安装程序

c# - 我在 JIT/CLR 中发现了一个错误 - 现在我该如何调试或重现它?

c# - 带有 Microsoft.Extensions.DependencyInjection 的 .NET Framework 类库

c# - linq to sql 查询帮助

c# - 如何在 C# 中使用 LINQ 方法或查询表达式检索最后 5 条记录

c# - System.Net.Http.HttpClient 与 Windows.Web.Http.HttpClient - 主要区别是什么?

c# - 将 ObservableCollection 中的图钉绑定(bind)到 Bing Maps Control WP7

c# - 修改 .NET 项目文件和引用属性

c++ - 使用 msbuild 通过命令行编译时出现 LNK2019 错误