2016-12-05 155 views
2

我有一段艰难的时间计算出如何在Visual Studio 2017项目中设置交叉定位,但我一直无法找到任何示例。使用NuGet 4.0和Visual Studio 2017的交叉定位框架

我开始与.NET标准1.5项目,并保持简单我只是想添加.NET标准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

+1

没有人讨论过关于MSBuild for .NET Core项目的多重定位,但恕我直言。除非Microsoft提供更多信息,否则您必须立即针对单个平台。你提到的文档只是NuGet,我不认为它们是相关的。 –

+0

啊!是的,这是完全合理的。我不知道它是如何卡在我的脑海中,MSBuild会识别NuGet使用的标签。谢谢你礼貌地回答这样一个愚蠢的问题。 –

+0

嗯,我相信你已经提出了一个很好的问题,但并没有在正确的时间。微软刚刚将MSBuild支持带回到了.NET Core,并发布了预览版VS2017。所以目前还不知道'project.json'中的多个框架应该如何转换为MSBuild语法。时间会证明。 –

回答

2

我收到这对最新的Visual Studio 2017年的工作在本POS描述t 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和码头工人):在一个项目

  • 跨目标多目标框架。

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