构建面向不同.NET版本的库

时间:2018-03-21 03:34:06

标签: .net msbuild visual-studio-2017 nuget .net-4.7.1

我有一个库,我曾经通过执行如下命令行来构建不同版本的.NET:msbuild x.csproj /p:TargetFrameworkVersion=v4.6.2 ...多次,具有不同的属性TargetFrameworkVersion值。现在我想将.NET 4.7.1添加到脚本中。 4.7.1的构建成功但下一个构建失败并显示如下消息:

  

C:\ Program Files(x86)\ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ Microsoft \ NuGet \ 15.0 \ Microsoft.NuGet.targets(186,5):错误:您的项目未引用“.NETFramework ,版本= v4.6.2“框架。在project.json的“frameworks”部分中添加对“.NETFramework,Version = v4.6.2”的引用,然后重新运行NuGet restore。 [x.csproj]

我搜索了很多这个消息,但找不到任何有用的解决方案来修复我的构建脚本。最接近解决方案的是this。但是在每个msbuild之前删除project.assets.json没有帮助。显然,为不同版本的.NET恢复NuGet包存在问题。 能否请你提出解决方案。

1 个答案:

答案 0 :(得分:0)

好的,我最终做的是在项目文件的第一个PropertyGroup元素中手动添加像<TargetFrameworkVersions>net452;net462;net471</TargetFrameworkVersions> 这样的行。然后通过添加各种目标.NET版本的部分来修改(不删除)文件project.assets.json。这是一项繁琐的工作,我可以想象这对于有多个版本的多个项目来说会变得很麻烦。我在项目的某处保存了该文件的副本并将其添加到存储库中,这样如果它被VS重新生成 - 我可以轻松地将其恢复。

如果你只能坚持一个版本(最小公分母) - 你不需要任何一个版本。 Here is my project.assets.json file表示在NuGet for .NET 4.5.2,4.6.2和4.7.1上发布的非常简单的结构和最少数量的依赖项目。让我们希望VS团队能够在未来找到更好的方法来实现这一切。