我使用的是nuget包net.ibm.data.db2
(-〉windows),它也可以作为net.ibm.data.db2-lnx
(-〉linux)使用。现在,当使用net.ibm.data.db2(or -lnx)
在VS 2022中构建我自己的.Net 6项目MyProj.csproj时,我可以根据构建配置简单地选择使用哪一个:
<Choose>
<When Condition="'$(Configuration)'=='Debug-Linux' OR '$(Configuration)'=='Release-Linux'">
<ItemGroup>
<PackageReference Include="net.ibm.data.db2-lnx" Version="6.0.0.200">
<PrivateAssets>none</PrivateAssets>
</PackageReference>
</ItemGroup>
</When>
<Otherwise>
<ItemGroup>
<PackageReference Include="net.ibm.data.db2" Version="6.0.0.200">
<PrivateAssets>none</PrivateAssets>
</PackageReference>
</ItemGroup>
</Otherwise>
</Choose>
但是当我打包我的项目时,它对打包时选择的构建配置 * 只有一个依赖 *,要么是windows包 * 要么是linux包。
- 〉如果我想在其他地方引用这个包,我必须创建一个包MyProj和MyProj-lnx,让其他人使用我的windows和linux包。
如果他们想创建一个软件包,他们必须提供一个windows和linux软件包,等等。
我怎样才能制作一个包含两个版本的软件包,并根据构建配置或其他我可以配置的东西来选择正确的一个?我想为我的客户提供一个myproj.nupkg,用于构建和发布windows和linux程序集,这样他们就不必有所不同或选择任何东西。
可以假设所有客户端都获得了Debug-Linux
和Release-Linux
配置
1条答案
按热度按时间zaqlnxep1#
我注意到他们的dll文件名是相同的,API似乎也是相同的。
所以我对你的要求有一个想法。你可以基于dll文件而不是包管理器。
首先,您可以在项目根目录中运行nuget命令:
然后将所需的内容添加到项目引用中,如下所示:
属性“OS”将获取当前系统类型,Windows操作系统将获取“Windows_NT”,Linux操作系统将获取“Linux”。