我走進這個問題之前,讓我很快地解釋我的目標:NuGet包 - 引用的程序不被列爲項目參考
我有我使用的每一個網站,我建,其中包括一個模板項目基類,常用頁面(例如聯繫我們),有用的實用程序(異常日誌記錄)等。我想使這個模板可重用和可更新。以前我使用的是Visual Studio項目模板,但是我在引用所有需要的程序集時遇到了問題,所以我轉向了Nuget。我的印象是這樣會更容易,同時也給我提供了額外的好處。
問題:
我無法弄清楚如何創建一個NuGet包,其中將包括(解決方案中的我的本地機器上的兩個其他項目和DLL)包中的所有引用,也使他們安裝此模板的子項目中的依賴關係。
這是我得到了多少:
a。在該項目的nuspec文件中,我有以下內容:
<references>
<reference file="AjaxControlToolkit.dll" /> <!-- nuget dependency -->
<reference file="BjxContacts.Shared.dll" /> <!-- project dependency -->
<reference file="SomeExample.exe" /> <!-- exe local file dependency -->
<reference file="SomeOther.dll" /> <!-- dll local file dependency -->
</references>
<files>
<file src="bin\*.pdb" target="lib" />
<file src="bin\*.dll" target="lib"/>
<file src="bin\*.exe" target="lib"/>
<file src="bin\*.xml" target="lib"/>
</files>
b。當我運行pack命令時,我使用以下命令:nuget pack {projectname} .csproj - IncludeReferencedProjects -Symbols
c。輸出是兩個獨立的項目,一個與.symbols,一個沒有,它看起來像這樣在Package Explorer中:
所以在這一點上,感覺就像我一切正常。但是,一旦我在Visual Studio中創建了一個新的空Web應用程序並安裝此包,則這些引用的程序集或項目都不會包含在引用中:
我已經在這裏碰到了一個完整的磚牆。我一直在尋找天在網上,我發現了一堆東西,看上去就像他們也許會有幫助,但讓我失望的死角:
- https://github.com/dittodhole/powershell-nuget-packager
- Build NuGet Package automatically including referenced dependencies
- NuGet Packaging and referencing dll's
- Why doesn't nuget include the referenced project when packing?
我在哪裏錯了?
更新 在.net451文件夾中,它添加了所有外部項目引用。正如你可以在WebApplication截圖中看到的那樣,這些引用也不會被添加。 http://blabberjax.com/uploads/net451%20folder.JPG
什麼是.nupkg中的lib \ net451文件夾?我猜組件應該在那裏,但你的.nuspec把它們放在lib目錄中。我猜想NuGet會找到lib \ net451目錄並忽略父lib目錄中的程序集。如果將引用lib \ net451文件夾中的所有程序集,則您也不需要參考部分。如果您正在使用nuget pack .csproj,那麼您可以從.nuspec中刪除文件部分。 –
嘿@MattWard,項目引用將進入該文件夾,但它們也不會被添加爲創建的子項目中的引用。任何其他的想法可能會讓孩子的項目把它們當作參考嗎? 此外,我試圖改變目標=「lib \ net451」文件路徑,它仍然無法正常工作。 – pharophy