如何强制系统再次在我的包中包含所需的依赖项?
这是一个关于nuget pack 在使用 PackageReference 而不是 packages.config 时忽略依赖项的已知问题。
要解决此问题,您可以使用以下解决方法,NuGet 团队仍在积极努力改进此方案:
PackageReference
要打包通过csproj 本身管理依赖项的 C# 类库
,
请添加对
NuGet.Build.Tasks.Pack
(
https://www.nuget.org/packages/NuGet.Build.Tasks.Pack/)的引用并从命令行运行
msbuild /t:pack
。
我已经测试了这个解决方法,它工作正常。为确保此解决方法正常工作,我们需要注意以下几点:
- 需要将nuget包添加
NuGet.Build.Tasks.Pack
到项目中。
- 需要添加属性
/p:PackageOutputPath="D:\TesterFolder" -p:Authors=tester
- 使用命令
msbuild.exe /t:pack
,例如:msbuild.exe /t:pack "MyTestLibrary.csproj" /p:PackageOutputPath="D:\TestFolder" -p:Authors=tester
此外,如果要使用.nuspec
文件创建 nuget 包,则应使用以下.nuspec
文件:
<?xml version="1.0"?>
<package >
<metadata>
<id>MyTestLibrary</id>
<version>1.0.0</version>
<authors>Tester</authors>
<owners>Tester</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package description</description>
<releaseNotes>Summary of changes made in this release of the package.</releaseNotes>
<copyright>Copyright 2018</copyright>
<tags>Tag1 Tag2</tags>
<dependencies>
<group targetFramework=".NETFramework4.7.2">
<dependency id="Microsoft.Owin" version="4.0.0" exclude="Build,Analyzers" />
</group>
</dependencies>
</metadata>
<files>
<file src="bin\Debug\MyTestLibrary.dll" target="lib\net472\MyTestLibrary.dll" />
</files>
</package>
然后我们可以nuget.exe pack
用来创建nuget包。但是,使用这种方法,我们必须在文件中手动填写所需的依赖.nuspec
项。
希望这可以帮助。