我有一個奇怪的問題,其中有一個Windows服務項目(A)引用解決方案(B)中的另一個項目。項目B提及nuget包(在這種情況下,protobuf-net);它正確地引用了packages文件夾中的路徑。但是,當我構建Windows Service項目A時,被複制的DLL是不同的版本(來自GAC)。引用的項目依賴項是從GAC而不是NuGet包文件夾複製
什麼是解決這個問題的最好方法,並確保它正確地複製依賴關係。
我試着刪除軟件包文件夾中的關聯文件夾,然後重建項目B;這確實會導致nuget自動再次下載文件,但是我發現Visual Studio for Project B中的引用已更新爲GAC中的舊版本。我必須刪除packages.config文件中的引用,然後使用nuget再次將其添加,以使其更新爲使用packages文件夾中的正確路徑。
注意:除非有一些強有力的理由在GAC中安裝這些程序集,否則從GAC中卸載它們可能會更好...通常,通過NuGet分發的程序集預計將隨應用程序一起復制並且未安裝。 GAC始終優先考慮加載程序集 - 因此,如果版本沒有正確增加,GAC的副本將接管。 –
是的,不知道該組件在GAC中以何種方式或如何結束。但是,nuget包引用了v2.0.0,而GAC包含了v1.0.0。至少可以說是相當奇怪和煩人的。 – Sivart
更奇怪的是,還有另一個引用Project B的項目(C),並且它的構建/發佈輸出實際上包含了引用程序集的正確版本。只是這個項目似乎有問題。 – Sivart