我有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