在多目标 .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 和 Condition
s 测试 $(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>
对于预处理器指令,您无需执行任何操作。 NET452
或 NETSTANDARD1_6
等指令是自动定义的。
使用 project.json
,可以针对不同的目标框架,为每个目标框架指定不同的依赖项和条件编译符号。
我需要对使用 .csproj
项目格式的 .NET Standard class 库执行相同的操作。我知道
(如果"conditional compilation"不清楚,我需要能够在代码中指定预处理器指令,例如#if NET452
。)
处理应用程序设置时,这是一个有用的例子。使用完整的 .NET Framework,您需要参考 System.Configuration.dll
并完成 ConfigurationManager
。 .NET Core configuration 是完全不同的野兽。
<ItemGroup>
s 和 Condition
s 测试 $(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>
对于预处理器指令,您无需执行任何操作。 NET452
或 NETSTANDARD1_6
等指令是自动定义的。