#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