背景:我有兩個名爲「A」和「B」的程序集。 「」A「引用」B「。」A「也引用一些額外的dll(Microsoft.Enterprise Library.Data和Microsoft Enterprise Library.Common),我認爲它應該打包在nupkg中。NuGet包裝和引用DLL的
我相信我的nupkg包應該包含來自「A」,「B」和兩個「Microsoft Enterprise」程序集的程序集輸出,這樣當有人安裝我的程序包時,它將直接引用程序集「A」,其他三個程序集將可用但不能直接引用,從而使他們的應用程序將運行什麼是包裝不引用的DLL的正確方法
嘗試#1:?包裝所有需要的DLL在\ net35文件夾 按照NuGet documentation regarding the "references"元素「如果省略了該元素,那麼通常的行爲將適用,即引用lib文件夾中的每個程序集。」
因此,我假設通過使用此元素它將只包含指定爲引用的程序集。如果我也使用「文件」元素<file src=*.dll" target="lib\net35" />
,這似乎不是這種情況。如果我有一個像這樣的元素將所有dll複製到包中,它會導致實現此包的程序集引用\ net35目錄中的所有程序集。這不是我想要做的。我期望一些魔法,只有在「引用」中指定的程序集纔會被實際引用,其他所有程序都將保留在展開的\ packages文件夾中,並且該應用程序可以工作,因爲所有的dll都位於相同的目錄中。也許我是不正確....
嘗試#2添加的內容時,該包裝在創建\ lib文件夾項目 如果我把未被引用的組件到\內容\ lib中,而不是LIB \ net35項目並直接將\ content \ lib dll轉儲到該項目中,然後強制我們將它們檢入到源代碼控制中。這工作,編譯和運行,但我真的不希望這些存儲在項目的\ lib文件夾中。
我正在尋找一個解決方案,其中項目獲得對「A」的引用,並且仍然可以與其他所需的程序集共同運行但不直接引用。似乎嘗試#1是正確的道路,但也許有一個錯誤?
僅供參考,我直接進入這個as a issue with NuGet看到它的團隊也有一個答案。
這是NuGet 2.1中引入的一個迴歸/錯誤,他們已經糾正了這個問題,它將在本月的2.2版中得到修復。 – Jay