#if net48 导致编译器错误,因为缺少组件
#if net48 results in compiler error because components are missing
我正在努力将应用程序迁移到 .netcore,并希望保留一个可用于 .Net Framework 4.8 的本地库。但是它使用 System.Web.Security 中的组件,所以我使用 compiler directives 将这些组件留给目标框架版本而不是最新框架。在 .net 核心中,我无论如何都不需要这些功能。但是,编译器将指令中的代码视为不存在,如下例所示:
// 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
具有以下 SDK 样式 csproj 的项目:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworks>net48</TargetFrameworks>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
</Project>
所以我什至还没有以 netstandard2.0 为目标,只是在 net48 中存在问题。如果你认为提供一个单一的目标框架需要 XML 元素是单数的,我也试过了,这没有什么区别。
需要大写的框架属性:#if NET48
我正在努力将应用程序迁移到 .netcore,并希望保留一个可用于 .Net Framework 4.8 的本地库。但是它使用 System.Web.Security 中的组件,所以我使用 compiler directives 将这些组件留给目标框架版本而不是最新框架。在 .net 核心中,我无论如何都不需要这些功能。但是,编译器将指令中的代码视为不存在,如下例所示:
// 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
具有以下 SDK 样式 csproj 的项目:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Library</OutputType>
<TargetFrameworks>net48</TargetFrameworks>
<PlatformTarget>AnyCPU</PlatformTarget>
</PropertyGroup>
</Project>
所以我什至还没有以 netstandard2.0 为目标,只是在 net48 中存在问题。如果你认为提供一个单一的目标框架需要 XML 元素是单数的,我也试过了,这没有什么区别。
需要大写的框架属性:#if NET48