代码之家  ›  专栏  ›  技术社区  ›  Álvaro García

在mul-titarget项目中,我只有更具限制性的框架的资源?

  •  0
  • Álvaro García  · 技术社区  · 7 年前

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <PackageId>Bugsnag</PackageId>
        <Title>Bugsnag .NET Notifier</Title>
        <TargetFrameworks>net35;net40;net45;netstandard1.3;netstandard2.0</TargetFrameworks>
      </PropertyGroup>
    </Project>
    

    我的目标是net35、net40、net45和其他。Net40具有net35没有的功能,net45具有Net40没有的功能。

    所以我的疑问是,当我编写应用程序时,我是否具备net45的所有功能?如果这是真的,那么如果net35没有我正在使用的一些功能,它怎么可能编译呢?

    非常感谢。

    1 回复  |  直到 7 年前
        1
  •  2
  •   Romen    7 年前

    当您针对多个框架时,必须使用条件引用和预处理器符号来处理并非所有目标框架都支持的功能。

    假设您的目标是.NET 4.0和4.5:

    <PropertyGroup>
      <TargetFramework>net40;net45</TargetFramework>
    </PropertyGroup>
    

    如果您有一个可选的依赖项使用framework 4.5而不是4.0,那么您可以在项目中有条件地引用它:

    <ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
      <Reference Include="Referenced.Assembly.Name" />
    </ItemGroup>
    

    您可能还需要使用它来为每个框架引用不同版本的依赖项。

    public void Example()
    {
    #if NET45
        // Implementation that uses the 4.5 framework
    #else
        // Implementation that uses the 4.0 framework
    #endif
    }
    

    多目标框架的完整文档可在此处找到:
    Target Frameworks | Microsoft Docs

    推荐文章