Многоцелевой таргетинг с условиями вызывает сбой NuGet? - PullRequest
1 голос
/ 03 октября 2019

У меня есть проект, использующий пакеты NuGet. Это также должно предназначаться для различных версий платформы для конфигурации конфигурации. Я выложил их в моем файле csproj примерно так:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == '2018|x64'">
    <OutputPath>..\BuildFolder\2018</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <TargetFrameworkVersion>v4.6.1</TargetFrameworkVersion>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
    <WarningLevel>4</WarningLevel>
  </PropertyGroup>
  <PropertyGroup Condition="'$(Configuration)|$(Platform)' == '2019|x64'">
    <OutputPath>..\BuildFolder\2019</OutputPath>
    <DefineConstants>TRACE</DefineConstants>
    <TargetFrameworkVersion>v4.7</TargetFrameworkVersion>
    <Optimize>true</Optimize>
    <DebugType>pdbonly</DebugType>
    <PlatformTarget>x64</PlatformTarget>
    <ErrorReport>prompt</ErrorReport>
    <CodeAnalysisRuleSet>MinimumRecommendedRules.ruleset</CodeAnalysisRuleSet>
  </PropertyGroup>

У меня больше конфигураций сборки, чем это, но это примеры, где у меня есть две разные платформы. Проблема в том, что когда я пытаюсь выполнить пакетную сборку проекта со всеми конфигурациями выпусков, половина из них терпит неудачу в зависимости от того, какой у меня текущий конфиг. Используя два приведенных выше, я могу переключить VS на свою конфигурацию 2018 и выполнить восстановление NuGet, затем выполнить пакетную сборку, и 2018 сработает, а 2019 потерпит неудачу с ошибкой «Ваш проект не ссылается на .NET Framework 4.7». Если затем я переключаюсь на конфигурацию 2019 и выполняю восстановление NuGet, а затем пытаюсь выполнить пакетную сборку, я получаю обратное;2019 работает, а 2018 говорит мне: «Ваш проект не ссылается на .NET Framework 4.6.1».

Я также пытался вставить объект 'TargetFrameworks' в файл csproj, но тогда VS просто вращается и вращается при открытии и никогда не открывает проект.

Как мне заставить это работать ираспознать его для сборки всех конфигов в пакетном режиме? Полагаю, я мог бы построить их по отдельности, и пока придется, но это кажется трудоемким и ненужным ...

...