我注意到,我正在處理的一個VS2010 C#網站項目似乎總是需要一個iisreset才能看到項目中文件背後的代碼所做的更改。我注意到它沒有正確版本的程序集,因爲當我嘗試調試Visual Studio時,不會讓我在我更改的代碼文件中放置斷點。爲什麼我的機器需要完整的IIS重置來查看ASP.NET項目的代碼更改?
我本來以爲做一個應用程序池重新啓動就足夠了,但是我們的後期構建步驟可以做到這一點,它似乎不夠。
在我的機器或項目中可能會出現某些東西沒有正確配置以實現此目的?
我注意到,我正在處理的一個VS2010 C#網站項目似乎總是需要一個iisreset才能看到項目中文件背後的代碼所做的更改。我注意到它沒有正確版本的程序集,因爲當我嘗試調試Visual Studio時,不會讓我在我更改的代碼文件中放置斷點。爲什麼我的機器需要完整的IIS重置來查看ASP.NET項目的代碼更改?
我本來以爲做一個應用程序池重新啓動就足夠了,但是我們的後期構建步驟可以做到這一點,它似乎不夠。
在我的機器或項目中可能會出現某些東西沒有正確配置以實現此目的?
-I假設你運行asp.net 4-
在使欠彙編
<compilation debug="true" batch="false" optimizeCompilations="true"
defaultLanguage="C#" targetFramework="4.0">
可以更改批次 web.config中,這是值調試運行,或optimizeCompilations,查看您的問題是否已解決。
現在我會告訴你一些其他的原因,我有注意到。
當你有一個像
foo(int cValueA, int cValueB = 23)
出於某種原因,使用默認參數應用功能將其更改爲
foo(int cValueA, int cValueB = 23, int cValueC = 34)
或
foo(int cValueA)
所有的呼叫,與該功能一個單一的值,不能捕獲你的函數的更新,所以他們使用舊的代碼。解決這個問題的方法之一就是搜索對該函數的所有引用,並打開該文件,在末尾添加一個空格並保存它,這樣我就可以更改該文件的日期時間以提供給編譯器請注意需要更新。
IIS針對部署文件在運行時不更改的生產環境進行了優化。如果是這種情況,IIS必須在執行期間定期輪詢並重新加載dll。生產廣告中罕見的情況也會大幅降低性能。通常在開發過程中使用VS2010提供的測試Web服務器。這是針對開發進行優化的。正確使用正確的工具。
我們試圖使我們的開發環境儘可能接近生產環境,以便捕捉環境錯誤。 – Helephant 2010-07-09 15:48:50