2014-12-04 47 views
0

在我目前的架構,我有以下項目組織沒有發現......基地項目dll引用在上層

名爲「MyBaseProject」和而不同的Web應用程序項目,參照MyBaseClassLibrary的類庫。

在MyBaseProject我加了一個第三方的DLL(Newtonsoft.Json)

現在所有的網絡項目都拋出異常「無法加載文件或程序Newtonsoft.Json或它的一個依賴。」

我不想在我所有的Web項目中添加Newtonsoft.Json,我該怎麼辦?

回答

1

請參閱How the Runtime Locates Assemblies

這裏最明顯的行爲是您沒有爲您的項目設置輸出目錄,因此他們默認爲他們自己的單個位置。因此,雖然MyBaseProject參考和副本Newtonsoft.Json,您的其他項目只複製MyBaseProject。因此,與其他項目位於文件夾中的MyBaseProject.dll確實不是而是具有Newtonsoft.Json的副本,並且由於它不在GAC中,因此參考失敗。

最簡單的解決方案是將所有項目輸出到同一個目錄。我個人喜歡$(SolutionDir)\bin\$(Configuration)\$(Platform)。這將確保當MyBaseProject.dll構建並滿足其任何要求時,其他項目將能夠通過相同的文件夾毫無意外地獲得這些要求。

+0

實際上目錄輸出已經設置。我刪除了MyBaseProject的引用並再次添加,它工作。 – 2014-12-04 19:34:43

相關問題