Есть ли способ заставить ссылку на проект to.NET стандартный проект для конкретной целевой фреймворк


Я являюсь участником проекта GitHub, и недавно у нас возникли некоторые проблемы с нашей .NET Standard 2.0 проекта установки правильно в .NET Framework 4.5 проекта. Причина этого заключается в том, что (если я правильно понимаю) .NET Standard 2.0 поддерживает минимальную .NET Framework 4.6.1.

Ладно, достаточно честно. Поэтому мы обновили свой .csproj для создания другого вывода фреймворка:

<TargetFrameworks>netstandard2.0;net45</TargetFrameworks>

В нашем тестовом проекте поддерживаемые фреймворки определяются как например:

<TargetFrameworks>netcoreapp2.0;net471;net45</TargetFrameworks>

Однако мы сталкиваемся с проблемой с net471 сборкой, поскольку она, похоже, берет структуру net45, а не netstandard2.0. Чтобы заставить это работать, мы должны установить TargetFrameworks библиотеки классов как таковой:

<TargetFrameworks>netstandard2.0;net471;net45</TargetFrameworks>

Это кажется чрезмерным, поскольку кажется, что .netstandard2.0 должен быть TargetFramework, который net471 берет, а не net45 цель.

Есть ли способ заставить проект ссылаться на конкретный TargetFramework? Я действительно попробовал следующее В нашем тестируем проект, но вроде бы не получилось:
<ItemGroup Condition="'$(TargetFramework)' != 'net471'">
  <ProjectReference Include="....srcExtendedXmlSerializerExtendedXmlSerializer.csproj" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'net471'">
  <ProjectReference Include="....srcExtendedXmlSerializerExtendedXmlSerializer.csproj">
    <TargetFramework>netstandard2.0</TargetFramework>
  </ProjectReference>
</ItemGroup>
Заранее благодарю вас за любую помощь, которую вы можете оказать!
1 5

1 ответ:

Вы можете изменить ссылку на проект следующим образом:

  <ProjectReference Include="..\..\src\ExtendedXmlSerializer\ExtendedXmlSerializer.csproj" 
                    AdditionalProperties="TargetFramework=netstandard2.0" />

Для принудительного выбора конкретной целевой структуры по логике по умолчанию "get nearest TFM".