2017-06-27 55 views
3

我有3個項目(使用netstandard1.4)的解決方案。項目A包含共享代碼。項目B是服務器端庫,項目C是客戶端庫。項目B和C包括項目A作爲項目參考。在nuget包中包含引用的項目

現在我想發佈項目B和項目C作爲塊金包。

問題是項目B和C的塊金包不包含項目A的代碼/ dll。它看起來像項目B和C需要項目A也是nuget包。

如何將項目B和C打包爲獨立塊金程序包?我不想將項目A發佈爲塊金包。

+0

然後,當有人安裝包B和C將有A的代碼。 – dcg

+0

爲什麼你不想發佈A?該代碼無論如何都可以使用,如果有人安裝了B和C,它可能會導致衝突。 –

+0

單靠項目A是毫無用處的,我不會在同一個項目中使用B和C有任何不切實際的情況。 A的Nuget數據包使其對用戶而言變得更加複雜。 此外,如果我想要使用共享代碼嵌入另一個項目,該怎麼辦?一個庫的3個包對我來說似乎不是很有用。 – ctron

回答

2

如何將項目B和C打包爲獨立塊金程序包?我不想將項目A發佈爲塊金包。

由於您使用的是netstandard1.4,因此無法使用直接方式「donet pack」來包含項目引用。因爲dotnet pack將包只有項目,而不是它的P2P引用,您可以從文檔dotnet-packthe issue on GitHub獲得詳細信息:

的打包項目的

的NuGet依賴被添加到.nuspec文件,所以他們在安裝軟件包時妥善解決。項目到項目的引用不打包在項目中。目前,如果您有項目到項目的依賴關係,則必須爲每個項目提供一個包。

如果要打包項目B和C含有從項目中的代碼/ DLL,您可以使用NuGet.exe通過添加項目引用程序集的.n​​uspec文件創建包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發佈爲塊金程序包。

相關問題