Платформы перекрестного таргетинга с NuGet 4.0 и Visual Studio 2017

Мне трудно понять, как настроить перекрестный таргетинг внутри проекта 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


person Jonathan Byrne    schedule 05.12.2016    source источник
comment
ИМХО, никто еще не обсуждал мультитаргетинг в проектах MSBuild для .NET Core. Вы должны ориентироваться на одну платформу прямо сейчас, если Microsoft не предоставит больше информации. Документы, на которые вы ссылались, предназначены только для NuGet, и я не думаю, что они актуальны.   -  person Lex Li    schedule 05.12.2016
comment
А! Да, в этом есть смысл. Я не знаю, как это застряло у меня в голове, что MSBuild распознает теги, используемые NuGet. Спасибо за вежливый ответ на такой глупый вопрос.   -  person Jonathan Byrne    schedule 05.12.2016
comment
Ну, я считаю, что вы задали очень хороший вопрос, но не в нужное время. Microsoft только что вернула поддержку MSBuild обратно в .NET Core и выпустила предварительную сборку с VS2017. Поэтому пока неизвестно, как несколько фреймворков в project.json следует переводить в синтаксис MSBuild. Время покажет.   -  person Lex Li    schedule 05.12.2016
comment
Это все еще хороший вопрос. Спустя пол года ответа так и нет?   -  person Onots    schedule 17.05.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 также указаны как функция (в рамках .NET Core и Docker):

  • Кросс-целевой несколько целевых платформ в одном проекте.

Моя ошибка в начале заключалась в том, что когда я впервые создал проект, свойство называлось TargetFramework, я пытался добавить несколько целей, и VS это совсем не понравилось. Тогда он просто вылетает... Так что не забудьте переименовать его в TargetFrameworks, и он должен работать.

person tesharp    schedule 04.01.2017