我有3个项目(使用netstandard1.4)的解决方案。项目A包含共享代码。项目B是服务器端库,项目C是客户端库。项目B和C包括项目A作为项目参考。在nuget包中包含引用的项目
现在我想发布项目B和项目C作为块金包。
问题是项目B和C的块金包不包含项目A的代码/ dll。它看起来像项目B和C需要项目A也是nuget包。
如何将项目B和C打包为独立块金程序包?我不想将项目A发布为块金包。
我有3个项目(使用netstandard1.4)的解决方案。项目A包含共享代码。项目B是服务器端库,项目C是客户端库。项目B和C包括项目A作为项目参考。在nuget包中包含引用的项目
现在我想发布项目B和项目C作为块金包。
问题是项目B和C的块金包不包含项目A的代码/ dll。它看起来像项目B和C需要项目A也是nuget包。
如何将项目B和C打包为独立块金程序包?我不想将项目A发布为块金包。
如何将项目B和C打包为独立块金程序包?我不想将项目A发布为块金包。
由于您使用的是netstandard1.4,因此无法使用直接方式“donet pack
”来包含项目引用。因为dotnet pack
将包只有项目,而不是它的P2P引用,您可以从文档dotnet-pack和the issue on GitHub获得详细信息:
的打包项目的的NuGet依赖被添加到.nuspec文件,所以他们在安装软件包时妥善解决。项目到项目的引用不打包在项目中。目前,如果您有项目到项目的依赖关系,则必须为每个项目提供一个包。
如果要打包项目B和C含有从项目中的代码/ 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打包为独立块金程序包,不需要将项目A发布为块金程序包。
然后,当有人安装包B和C将有A的代码。 – dcg
为什么你不想发布A?该代码无论如何都可以使用,如果有人安装了B和C,它可能会导致冲突。 –
单靠项目A是毫无用处的,我不会在同一个项目中使用B和C有任何不切实际的情况。 A的Nuget数据包使其对用户而言变得更加复杂。 此外,如果我想要使用共享代码嵌入另一个项目,该怎么办?一个库的3个包对我来说似乎不是很有用。 – ctron