我有3个项目的解决方案(使用netstandard1.4)。项目A包含共享代码。项目B是服务器端库,项目C是客户端库。项目B和C包括项目A作为项目参考。
现在我想将项目B和项目C发布为nuget包。
问题是项目B和C的nuget包不包含项目A中的代码/ dll。看起来项目B和C希望项目A也作为nuget包。
如何将项目B和C打包为独立的nuget包?我不想将项目A作为nuget包发布。
答案 0 :(得分:3)
如何将项目B和C打包为独立的nuget包?我不想将项目A作为nuget包发布。
由于您使用的是.NET Standard 1.4
,因此无法使用直接方式“dotnet pack
”来包含项目引用。由于dotnet pack
仅打包项目而不打包其P2P引用,因此您可以从文档dotnet-pack和the issue on GitHub获取详细信息:
打包项目的NuGet依赖项被添加到.nuspec文件中,因此在安装软件包时可以正确解析它们。项目到项目的引用不会打包在项目中。目前,如果您有项目到项目的依赖关系,则每个项目必须有一个包。
如果要打包项目B和C包含项目A中的代码/ dll,可以使用NuGet.exe通过将项目引用程序集添加到.nuspec文件来创建程序包B和C:
<?xml version="1.0"?>
<package >
<metadata>
<id>TestProjectB</id>
<version>1.0.0</version>
<authors>Tester</authors>
<owners>Tester</owners>
<requireLicenseAcceptance>false</requireLicenseAcceptance>
<description>Package description</description>
<releaseNotes>Test sample for netstandard package.</releaseNotes>
<copyright>Copyright 2017</copyright>
<tags>Tag1 Tag2</tags>
</metadata>
<files>
<file src="bin\Debug\netstandard1.4\TestProjectB.dll" target="lib\netstandard1.4\TestProjectB.dll" />
<file src="bin\Debug\netstandard1.4\TestProjectA.dll" target="lib\netstandard1.4\TestProjectA.dll" />
</files>
</package>
在这种情况下,您可以将项目B和C打包为独立的nuget包,不需要将项目A作为nuget包发布。