СУШКА <TargetFramework>иногда работает, иногда ломается - PullRequest
0 голосов
/ 23 октября 2019

Когда я пишу это, у нас есть 2497 .csproj файлов во всей нашей организации.

У нас одна политика, и это "моно-все". Это означает, что ради сокращения затрат и повышения качества мы модернизируем всю организацию. Все должно быть обновлено, когда мы решим что-либо обновить.

Теперь, после обновления до .NET Core 3.0, который был и является болезненным процессом, мы решили СУХОЙ <TargetFramework> и удалить Debug\netcoreapp3.0 из выходной папки. Мы хотим, чтобы эта политика применялась ко ВСЕМ нашим проектам. Итак, мы создали файл ProjectDotNetCore.targets:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <TargetFramework>netcoreapp3.0</TargetFramework>
    <OutputPath>.\bin</OutputPath>
    <AppendTargetFrameworkToOutputPath>false</AppendTargetFrameworkToOutputPath>
    <AppendRuntimeIdentifierToOutputPath>false</AppendRuntimeIdentifierToOutputPath>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    <PublishWithAspNetCoreTargetManifest>false</PublishWithAspNetCoreTargetManifest>
  </PropertyGroup>

</Project>

И мы используем этот файл .targets во всех этих файлах 2500 .csproj. Таким образом, мы можем обеспечить единое поведение во всей организации. Таким образом, типичный .csproj файл будет выглядеть так:

<Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup Label="Globals">
    <SccProjectName>SAK</SccProjectName>
    <SccProvider>SAK</SccProvider>
    <SccAuxPath>SAK</SccAuxPath>
    <SccLocalPath>SAK</SccLocalPath>
  </PropertyGroup>

  <PropertyGroup>
    <AssemblyName>HolismCommerce.Sammerce.AdminService</AssemblyName>
    <RootNamespace>HolismCommerce.Sammerce.AdminService</RootNamespace>
  </PropertyGroup>

  <Import Project="$(OrganizationProjectsRoot)\Framework\ProjectDotNetCore.targets" />

</Project>

Проблема в том, что иногда это работает, иногда это не работает, и мы получаем эту ошибку:

Ошибка NETSDK1013 Значение TargetFramework 'netcoreapp3.0' не распознано. Это может быть с ошибкой. Если нет, то свойства TargetFrameworkIdentifier и / или TargetFrameworkVersion должны быть указаны явно.

Почему он имеет недетерминированное поведение? Мы хотим иметь возможность установить <TargetFramework> всех проектов из центрального расположения. Как мы можем отладить его?

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