【问题标题】:Cross-targeting frameworks with NuGet 4.0 and Visual Studio 2017使用 NuGet 4.0 和 Visual Studio 2017 的跨目标框架
【发布时间】:2016-12-05 11:49:41
【问题描述】:

我很难弄清楚如何在 Visual Studio 2017 项目中设置交叉定位,但我找不到任何示例。

我从 .NET Standard 1.5 项目开始,为了简单起见,我只是尝试添加 .NET Standard 1.6。如果我正确理解文档,我现在应该能够在 csproj 文件中完成所有这些操作,而不必弄乱 project.json 或 nuspec 文件。

我已经尝试了所有这些值,但似乎都不起作用:

<TargetFrameworks>netstandard15;netstandard16</TargetFrameworks>
<TargetFrameworks>netstandard1.5;netstandard1.6</TargetFrameworks>
<TargetFrameworks>.NETStandard,Version=v1.5;.NETStandard,Version=v1.6</TargetFrameworks>

这是我能找到的关于该功能的唯一文档来源,它不包含完整的示例:

https://docs.nuget.org/ndocs/schema/msbuild-targets

https://docs.nuget.org/ndocs/create-packages/supporting-multiple-target-frameworks

【问题讨论】:

  • 没有人讨论过 MSBuild 中针对 .NET Core 项目的多目标,恕我直言。除非 Microsoft 提供更多信息,否则您现在必须针对单个平台。您提到的文档仅是 NuGet,我认为它们不相关。
  • 啊!是的,这完全有道理。我不知道 MSBuild 如何识别 NuGet 使用的标签。感谢您礼貌地回答了这么愚蠢的问题。
  • 好吧,我相信您提出了一个非常好的问题,但不是在正确的时间。微软刚刚将 MSBuild 支持带回 .NET Core,并发布了 VS2017 的预览版。所以目前还不知道应该如何将project.json 中的多个框架转换为 MSBuild 语法。时间会证明一切。
  • 这仍然是一个好问题。半年过去了,好像还是没有答案?

标签: visual-studio msbuild msbuild-4.0 visual-studio-2017


【解决方案1】:

我已经让它在最新的 Visual Studio 2017 上工作。正如这篇文章 https://blogs.msdn.microsoft.com/dotnet/2016/10/19/net-core-tooling-in-visual-studio-15/ 中所述,这是正确的方法。我的 csproj 文件如下所示:

<PropertyGroup>
  <TargetFrameworks>netstandard1.6;net452</TargetFrameworks>
</PropertyGroup>

Visual Studio 2017 RC release notes 也将此列为一项功能(在 .NET Core 和 Docker 下):

  • 在一个项目中跨目标多个目标框架。

我一开始的错误是,当我第一次创建项目时,该属性被称为TargetFramework,我试图添加多个目标,而 VS 根本不喜欢这样。然后它就崩溃了......所以一定要把它重命名为TargetFrameworks,它应该可以工作。

【讨论】:

    猜你喜欢
    • 2020-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-13
    • 2023-01-01
    • 2019-01-20
    相关资源
    最近更新 更多