问题描述
我在.csproj中指定了多目标定位
<TargetFrameworks>netstandard2.0;net472</TargetFrameworks>
当我使用以下脚本时,则我的包具有依赖关系,这是预期的结果:
dotnet pack --output nupkgs $ProjectPath -c:Release
问题是当我还想将.nuspec文件与一些有关软件包的信息一起使用时:
dotnet pack --output nupkgs $ProjectPath -c:Release -p:NuspecFile=$NuspecFile
使用.nuspec文件,该软件包没有依赖性,我只能将其安装在netstandard2.0 ...
<?xml version="1.0"?>
<package xmlns="http://schemas.microsoft.com/packaging/2013/05/nuspec.xsd">
<Metadata>
<id>xyz</id>
<version>1.2011.4</version>
<title>xyz</title>
<authors>xyz</authors>
<projectUrl>xyz</projectUrl>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>xyz</description>
<copyright>xyz</copyright>
</Metadata>
</package>
我是否应该在此.nuspec中添加一些内容以使其具有目标依赖性包?我已经阅读过有关标签的信息,但是老实说我找不到如何配置标签的示例。
解决方法
鉴于您正在使用基于SDK的项目,因此我强烈不建议您使用nuspec,除非您的方案由于其复杂性而无法满足要求。
通过dotnet.exe pack
通过项目文件自动生成软件包可以为您完成很多兼容性工作。
如果您确实需要使用nuspec,则应添加如下定义的依赖项组:
https://docs.microsoft.com/en-us/nuget/reference/nuspec#dependency-groups。
确保添加了相关框架。
示例
<group targetFramework=".NETFramework4.7.2">
<dependency id="PackageA" version="1.2.3" />
</group>
<group targetFramework=".NETStandard2.0">
<dependency id="PackageB" version="4.5.6" />
</group>
请注意,您需要为所支持的特定框架添加一个依赖组。