2017-01-18 232 views
1

我有這個DLL(Microsoft.web.Infrastructure.dll)在我的解決方案的許多項目的package.config。沒有生成錯誤,並且該DLL正在下載到解決方案的軟件包文件夾。 我得到運行時錯誤應用程序命中的每個項目上的缺少dll。當我查看單個項目的bin文件夾時,我沒有看到這個dll被複制。但正如我前面提到的那樣,dll被下載到解決方案的包文件夾中。Microsoft.web.Infrastructure.dll找不到 - Visual Studio 2015

治標不治本 -

  1. 手動將此DLL複製到所有單個項目斌
  2. 將這個dll在GAC

這個問題只是我的機器上,而不是在任何其他同事的機器。令人驚訝的是,其中一些有這個DLL複製到項目文件夾,而其中一些沒有。它適用於沒有這個dll的GAC,也沒有任何手動的工作,乾淨的重建爲他們做了一切。

我有一個短期修復,但我更好奇,知道它如何在其他機器上工作,以及我失蹤。

的事情,我至今嘗試過 - 清潔Microsoft.NET \ Framework64 \ v4.0.30319 \臨時ASP.NET文件\根.... 清潔液和關閉重新打開解決方案,並最終重建解決方案

的Visual Studio 2015年相比,視覺工作室沒有明確的NuGet高速緩存2013

僅供參考 - 我的Visual Studio 2015和所有其他的機器都在2013年,如果沒有別的事情,這是我在那裏我正在看。

任何幫助表示讚賞。

+0

你可以嘗試重新試試這個軟件包 - 'Update-Package -reinstall Microsoft.Web.Infrastructure' – Win

+0

看起來像這裏的一些相關信息:http://stackoverflow.com/questions/13149851/could-not-load-file- or-assembly-microsoft-web-infrastructure –

+0

Win - 當我清理並重建時,我認爲它會重新安裝它。而且,這個問題與其他機器如何工作相同。 – Raj

回答

5

請檢查Microsoft.web.Infrastructure.dll是否存在於Project References中。如果沒有,請嘗試贏的建議通過以下命令來重新安裝在Package Manager控制檯包:

更新,包裝-reinstall Microsoft.Web.Infrastructure

因爲的NuGet還原只恢復包基於package.config文件到軟件包目錄,但默認情況下不添加對您的項目的引用。因此,我們需要強制重新安裝軟件包以將參考和內容文件添加到項目中。

如果你的項目引用中已經存在dll,你需要檢查「Copy Local」的屬性值。複製本地屬性確定是否將引用複製到本地bin路徑。 如果要將引用複製到bin文件夾,應將CopyLocal = True設置爲。有關更多詳細信息,請參見Set the Copy Local Property

+0

你節省了我的一天 – MiDaa

0

我發現我的團隊曾經有bin文件夾中的dll,但沒有簽入,但項目文件仍然有指向這些被刪除的dll的引用。發生了什麼是我仍然有這些DLL在我的垃圾箱,而沒有人做,而這些DLL取決於microsoft.web.infrastructure存在,所以我是唯一一個得到這個錯誤。

對於我來說,這些DLL的(引用)分別爲:
System.Web.Razor System.Web.WebPages System.Web.WebPages.Deployment System.Web.WebPages.Razor

因此,而不是在項目文件(這將是在一個不同的檢查)修改的參考,我只是刪除這些dll的我bin,並且不再依賴於microsoft.web.infrastructure