在多目标 .NET Standard class 库时如何指定不同的依赖项和符号?

How do you specify different dependencies and symbols when multi targeting a .NET Standard class library?

使用 project.json,可以针对不同的目标框架,为每个目标框架指定不同的依赖项和条件编译符号。

我需要对使用 .csproj 项目格式的 .NET Standard class 库执行相同的操作。我知道,但是你如何为每个指定不同的依赖项和条件编译符号?

(如果"conditional compilation"不清楚,我需要能够在代码中指定预处理器指令,例如#if NET452。)

处理应用程序设置时,这是一个有用的例子。使用完整的 .NET Framework,您需要参考 System.Configuration.dll 并完成 ConfigurationManager.NET Core configuration 是完全不同的野兽。

已经有了答案:使用 <ItemGroup>s 和 Conditions 测试 $(TargetFramework)。对该答案略作修改的代码:

<ItemGroup Condition="'$(TargetFramework)' == 'net452'">
  <PackageReference Include="Microsoft.Azure.DocumentDB" Version="1.12.0" />
</ItemGroup>

<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.6'">
  <PackageReference Include="Microsoft.Azure.DocumentDB.Core" Version="1.1.0" />
</ItemGroup>

对于预处理器指令,您无需执行任何操作。 NET452NETSTANDARD1_6 等指令是自动定义的。