#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