我正在将一个应用程序迁移到.netcore,并希望保留一个可用于.Net Framework 4.8的本地库。然而,它使用了System.Web.Security中的组件,所以我使用编译器指令将这些组件排除在最新框架之外的目标框架版本之外。在.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