2016-12-05 11 views
2

У меня возникли проблемы с настройкой кросс-таргетинга внутри проекта Visual Studio 2017, и я не смог найти никаких примеров.Структуры кросс-таргетинга с NuGet 4.0 и 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

+1

Никто не обсуждал многоцелевой таргетинг в проектах MSBuild для .NET Core, но IMHO. Вы должны настроить таргетинг на одну платформу прямо сейчас, если только Microsoft не предоставит больше информации. Документы, на которые вы ссылались, являются только NuGet, и я не думаю, что они релевантны. –

+0

AH! Да, это имеет общий смысл. Я не знаю, как это застряло в моей голове, что MSBuild распознает теги, используемые NuGet. Спасибо, что вежливо ответил на такой глупый вопрос. –

+0

Ну, я думаю, вы задали очень хороший вопрос, но не в нужное время. Microsoft просто вернула поддержку MSBuild в .NET Core и отправила предварительную сборку с VS2017. Так что пока неизвестно, как несколько фреймворков в 'project.json' должны быть переведены в синтаксис MSBuild. Время покажет. –

ответ

2

Я получил эту работу на последней Visual Studio 2017. Как описано в этом поз 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 Ядра и Докер):

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

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