19

我有設置如下如何設置調試錯誤釋放模式

的Web.config

<configuration> 
... 
<system.web> 
    <compilation debug="true" targetFramework="4.5" /> 
    ... 
</system.web> 
</configuration> 

而且這裏的編譯選項這個web.config文件是什麼Visual Studio中提出釋放模式默認情況下。

Web.Release.config

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
<system.web> 
    <compilation xdt:Transform="RemoveAttributes(debug)" /> 
</system.web> 
</configuration> 

我用這對MVC4項目。根據​​,我預計當應用程序在發佈模式下運行時,會提供js和css的縮小版本。但是,這似乎並沒有工作,js和css的非縮小版本正在服務。另一方面,如果我在web.config中明確地將調試設置爲false,那麼最小版本將正確提供。

好像編譯標籤在應用程序下釋放模式運行變換的問題,但我不明白這有什麼錯在Web.Release.config相同。

總之,我無法通過運行發佈模式下的應用程序獲得捆綁和縮小工作。

+0

我敢打賭,這種情況正在發生,因爲你的應用程序在IIS中的父應用程序的虛擬目錄下運行,並在缺失時繼承其配置,因此它在存在時修復它,覆蓋父配置! – Bon

回答

14

它們在Web.Release.config中定義的Web.config轉換隻在爲相關配置部署/發佈項目時完成。

只是將Visual Studio中的活動配置更改爲發佈並運行應用程序不會運行轉換。因此,web.config保持不變。這種行爲是合理的,因爲Web應用程序是從包含原始web.config的項目目錄運行的。如果Visual Studio將轉換web.consign,您的原始web.config將被更改。

如果尚未創建部署配置文件,則可以將應用程序發佈到文件系統以驗證行爲。選擇Release作爲運行部署的配置。應該按預期執行轉換。

+1

我一直在撓我的頭。順便說一下,visual studio localhost從哪裏暫時運行該網站。我是指從哪個目錄。說,當我使用Visual Studio調試網站時,我想檢查web.config中的結果。 – Jatin

+0

@Nirvan:AFAIK從VS運行應用程序時,使用開發文件夾。這就是爲什麼VS不能轉換web.config,因爲它會改變轉換的起點。 – Markus

+0

噢,是的,你已經在你的答案中表明瞭這一點。 – Jatin

15

如果你想測試你已經在你的Global.asax文件中得到了設置您的.NET捆綁和縮小,您還可以使用預編譯符號...例如

#if DEBUG 
    BundleTable.EnableOptimizations = false; 
#else 
    BundleTable.EnableOptimizations = true; 
#endif 

隨着這樣,您的應用程序就不需要在構建操作中觸發轉換,並且可以像您想要的那樣運行。

9

我的回答可能會晚點,但是這什麼跟我一起工作:

我已經改了行:

<compilation xdt:Transform="RemoveAttributes(debug)" /> 

到:

<compilation xdt:Transform="Replace" debug="false" targetFramework="4.5" /> 

這個基本的伎倆,因爲我認爲優化器正在尋找Debug值,並且==「false」。

希望這可以幫助那些不想從代碼管理這個問題的人。

+1

只需注意,Replace將移除整個元素。當我用這個我包含的程序集列表被刪除,我開始得到以下錯誤。類型'System.Object'在未引用的程序集中定義。您必須添加對程序集「System.Runtime,Version = 4.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a」的引用 – leemicw

1

可能的改進,Omar.Alani的回答是:

在發佈變換,替換行:

<compilation xdt:Transform="RemoveAttributes(debug)" /> 

下列要求:

<compilation debug="false" xdt:Transform="SetAttributes" /> 
相關問題