在多目标项目中,我只能使用限制性更强的框架的资源吗?

In mul titarget project, I only have available the resources of the more restritive framework?

假设我有一个多目标项目,类似这样:

<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 没有我正在使用的某些功能?

非常感谢。

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

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

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

如果您有一个使用框架 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