Использование специфичного для .NET Core кода в многоцелевом проекте - PullRequest
0 голосов
/ 25 сентября 2018

Мне поручено начать «медленную миграцию» с .NET Framework (4.7.1) на .NET Core (2.1) на работе.У нас очень большое приложение, и мы не можем просто остановить разработку и создать новый стек просто в .NET Core.Я работал с библиотекой .NET Standard (2.0) в качестве «промежуточного звена» для проектов .NET Framework и .NET Core.Тем не менее, я столкнулся с проблемой с некоторым специфичным для ядра кодом.

Мой .NET Core .csproj файл выглядит так:

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

  <PropertyGroup>
    <TargetFrameworks>netcoreapp2.1;netstandard2.0</TargetFrameworks>
  </PropertyGroup>

</Project>

Мне пришлось добавить netstandard2.0и сделать его многофункциональным, чтобы включить интерфейсы в нашу Стандартную библиотеку.

Когда я это делаю, я получаю всевозможные ошибки сборки при попытке использовать код, который есть только в Core.Например, я получаю следующую ошибку:

«Файл» не содержит определения для «AppendAllTextAsync».

Есть ли способ использовать или даже иметьновая функциональность в нашем приложении перед удалением .NET Framework и стандартного кода?(Я пробовал новый .NET Core Project в новом решении, и он работал нормально, пока я не изменил .csproj на TargetFrameworks.

1 Ответ

0 голосов
/ 25 сентября 2018

Вы работаете с .NET Core 2.1 и .NET Standard 2.0..NET Core - это расширенный набор стандартов .NET, что означает, что у него есть стандарт и некоторые другие.File.AppendAllTextAsync является одним из них.

.NET Core: https://docs.microsoft.com/en-us/dotnet/api/?view=netcore-2.1&term=AppendAllTextAsync

.NET Standard: https://docs.microsoft.com/en-us/dotnet/api/?view=netstandard-2.0&term=AppendAllTextAsync

Так что, к сожалению, вы не можете просто просто кросс-компилировать этот код с .NET Standard.Если вы хотите, вы можете использовать нотации #if для написания кода, специфичного для фреймворка.Или вы можете придерживаться кода, который поддерживается в .NET Standard, например, вы можете использовать не асинхронный вариант: https://docs.microsoft.com/en-us/dotnet/api/?view=netstandard-2.0&term=AppendAllText

...