在多平台项目上添加特定平台的参考
Adding a reference for specific platform on multi-platform project
正在尝试在多目标项目中使用 System.Diagnostics.EventLog
。目标是:
- .NET 5
- .NET Framework 4.8
我的解决方案中有 3 个项目,其他 2 个项目一切正常。
提出问题的一个是为 .NET 5 引用 System.Diagnostics.EventLog
,因为它需要使用 EventLog
。
在 .NET framework 4.8 上,System.Diagnostics.EventLog
命名空间使用 System.dll
.
我正在寻找一种方法来仅在 .NET 5 项目中包含对该库的引用,而不是在 4.8[=35= 中] 一个.
当我添加对项目的引用时,它似乎将其添加到两个目标。有没有办法将它添加到 .NET 5 而不是 .NET 框架 4.8?
经过多次尝试,寻找和(几乎)破坏,我终于意识到这真的很简单:
编辑项目文件并在引用上提供条件编译参数,仅 .NET 5 目标需要:
<ItemGroup Condition=" '$(TargetFramework)' == 'net5.0-windows' ">
<Reference Include="System.Diagnostics.EventLog">
<HintPath>C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref.0.0\ref\net5.0\System.Diagnostics.EventLog.dll</HintPath>
</Reference>
</ItemGroup>
就是这样!
正在尝试在多目标项目中使用 System.Diagnostics.EventLog
。目标是:
- .NET 5
- .NET Framework 4.8
我的解决方案中有 3 个项目,其他 2 个项目一切正常。
提出问题的一个是为 .NET 5 引用 System.Diagnostics.EventLog
,因为它需要使用 EventLog
。
在 .NET framework 4.8 上,System.Diagnostics.EventLog
命名空间使用 System.dll
.
我正在寻找一种方法来仅在 .NET 5 项目中包含对该库的引用,而不是在 4.8[=35= 中] 一个.
当我添加对项目的引用时,它似乎将其添加到两个目标。有没有办法将它添加到 .NET 5 而不是 .NET 框架 4.8?
经过多次尝试,寻找和(几乎)破坏,我终于意识到这真的很简单:
编辑项目文件并在引用上提供条件编译参数,仅 .NET 5 目标需要:
<ItemGroup Condition=" '$(TargetFramework)' == 'net5.0-windows' ">
<Reference Include="System.Diagnostics.EventLog">
<HintPath>C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref.0.0\ref\net5.0\System.Diagnostics.EventLog.dll</HintPath>
</Reference>
</ItemGroup>
就是这样!