Цель MSBuild только для одного фреймворка - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть проект с целью мультифрейма - <TargetFrameworks>netstandard2.0;net471</TargetFrameworks>.

Я хочу построить решение для netframework и netstandard отдельно.

В настоящее время я использую эту команду MSBuild:

MSBuild MySln.sln /t:Build /p:Configuration=Release /p:Platform="Any CPU" /m /nr:False

Я попытался выполнить эту команду:

MSBuild CxAudit.sln /t:Build /p:Configuration=Release /p:Platform="Any CPU" /p:TargetFramework=netstandard2.0 /m /nr:False/ p: TargetFramework = netstandard2.0 )

Но это не удалось, даже первая команда прошла и создала вывод netstandard.

1 Ответ

0 голосов
/ 29 ноября 2018

Я предлагаю установить пользовательские свойства и условия для этих свойств.Таким образом, вы не будете влиять на другие проекты или ссылки:

<TargetFrameworks Condition="'$(BuildNetStdOnly)' == 'true'">netstandard2.0</TargetFrameworks>
<TargetFrameworks Condition="'$(BuildNetFxOnly)' == 'true'">net471</TargetFrameworks>
<TargetFrameworks Condition="'$(TargetFrameworks)' == ''">netstandard2.0;net471</TargetFrameworks>

Таким образом, вы можете строить, используя

msbuild -p:BuildNetStdOnly=true -p:Configuration=Release -m -nr:false
msbuild -p:BuildNetFxOnly=true -p:Configuration=Release -m -nr:false

Обратите внимание, что это настройка множественной версии только потому, что TargetFrameworkнеобходимо установить как глобальные свойства для внутренних сборок, если проект был восстановлен для обеих целевых структур.Если вы хотите установить единственное число TargetFramework, вам также необходимо восстанавливать снова для каждого вызова, передавая также аргумент -restore в msbuild.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...