2010-11-03 173 views

回答

60

這些文件提供有問題的DLL的路徑,告訴Visual Studio在哪裏可以找到它(如果在文本編輯器中打開它們,可以檢查它)。每次添加新項目引用時都會創建它們。

它們通常在您使用不創建標準Visual Studio項目文件的項目類型時出現,因爲通常會引用到其中的引用DLL的路徑。

32

here

在ASP.NET項目中,增加了基於文件的引用將在Bin文件夾添加.REFRESH文件。當項目受源代碼控制時,該文件將被添加到源代碼管理中。 *.dll.refresh丟棄bin目錄的文件。每次添加外部引用時,都會在其旁邊找到一個dll.refresh文件。這些dll.refresh文件是規則的一個例外,它們應該進入源代碼管理。它是您的Web項目知道其參考位置的唯一方式。

+5

部分從http://monsur.xanga.com/437206798/dllrefresh-and-aspnet/複製 – 2012-11-07 23:40:46

+16

嗨SharpUrBrain,它看起來像你剛從上面的鏈接複製大部分內容。你可以編輯你的文章並給予作者歸屬嗎?Stack Overflow並不歡迎抄襲,並且在信用到期時給予信用總是不錯的。謝謝! – 2012-11-18 20:45:55

+0

新文件引用的dll是否必須是.net格式?新鮮的文件在C++ DLL中新鮮嗎? – Gqqnbig 2016-05-20 21:56:15

4

一些關於嘗試和錯誤後刷新文件的信息。這些實驗是用Visual Studio 2012完成的。引用被添加到C#asp.net web項目中。

如上所述,通過瀏覽添加對組件的引用會添加一個.refresh文件。但是,如果在添加的目錄中顯式添加的DLL上存在額外的依賴DLL,則依賴項也會隱式添加,但不包含.refresh文件!因此,例如,我添加了一個對「MyAssembly.dll」的引用,我也會得到「MyAssembly.dll.refresh」。但是,如果有「MyAssembly.dll」依賴的程序集「MyDependentAssembly.dll」,我將無法獲得「MyDependentAssembly.dll.refresh」。所以會發生的是,一個程序集被刷新,但不是它的依賴者!您必須以相反的順序逐個添加一個DLL,然後事情會更好。

其他一些事情要小心。 添加「MyAssembly.dll」還會添加「MyAssembly.pdb」(如果存在)。如果存在,「MyAssembly.xml」也將被添加到引用中。當「MyAssembly.dll.refresh」存在時,這兩個文件也會刷新。

但是,Visual Studio何時決定查找刷新文件?現在請記住,在一個web項目中,項目文件並沒有專門跟蹤引用的DLL。您不會在項目文件中找到只列出項目依賴關係的DLL。那麼刷新什麼時候發生?

刷新發生時的答案是在構建時必須加載引用的程序集。這意味着,儘管構建預構建的可更新網站可能無法獲取所有DLL。我一直有一個不會刷新的DLL,然後我意識到它只用在.ascx文件中。取消選中「允許預編譯的網站可更新」複選框在MSBuild Options項目頁面中爲我解決了這個問題。

如果您添加了在代碼中通過反射加載的引用DLL,它們將不會通過引用進行更新。您必須使用生成事件將它們複製到bin目錄中。

+0

我認爲當你說'網站項目'時,你的意思是'網站'。 – 2017-08-17 17:27:38

相關問題