#если net48 приводит к ошибке компилятора из-за отсутствия компонентов

#c# #.net-core #migration #.net-standard-2.0 #.net-framework-4.8

#c# #.net-core #миграция #.net-standard-2.0 #.net-4.8

Вопрос:

Я работаю над переносом приложения в .netcore и хочу сохранить одну из локальных библиотек доступной для .Net Framework 4.8. Однако в ней используются компоненты из System.Web.Security, поэтому я использовал директивы компилятора, чтобы исключить эти компоненты для целевых версий платформы, отличных от последней платформы. В .net core мне все равно не понадобятся эти функции. Однако компилятор рассматривает мой код в директивах как несуществующий, как показано в следующем примере:

 // A project with <TargetFrameworkVersion>v4.8</TargetFrameworkVersion>
namespace Framework {
  public class A {
    public B Test; // Error, B is unknown.
  } // Class A
#if net48
  public class B {

  }
#endif 

} // Namespace Framework
  

Проект со следующим csproj в стиле SDK:

 <Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Library</OutputType>
      <TargetFrameworks>net48</TargetFrameworks>
      <PlatformTarget>AnyCPU</PlatformTarget>
  </PropertyGroup>
</Project>
  

Итак, я еще даже не настраиваю netstandard2.0, и проблема возникает только в net48. Если вы считаете, что для предоставления единой целевой платформы требуется, чтобы элемент XML был единственным, я также пробовал это, это не имеет значения.

Комментарии:

1. Вы пробовали #if NET48 вместо #if net48 ?

2. @JeffE Спасибо, вот и все, если вы измените ответ, я приму его. Меня смутило значение, переданное в csproj.

Ответ №1:

Свойства фреймворка должны быть прописными: #if NET48