2013-04-25 85 views
7

我將SlowCheetah下載到舊的.Net 3.5 Web窗體應用程序中,以便將轉換添加到web.config中。在3.5 Web Forms應用程序的Web.config中使用SlowCheetah配置轉換

我已經使用SlowCheetah與Windows服務和控制檯應用程序在過去成功轉換app.config。在這些情況下,配置將被轉換並作爲ApplicationName.exe.config放在bin中。

但是,使用此Web表單應用程序時,配置文件永遠不會在bin中結束,因爲Web表單站點只是將.dll放入bin並且IIS指向根目錄以運行該站點。因此,不是將web.config包含在構建過​​程中,而是將其打包到bin中,而只是將它放在根目錄中。

沒有變換應用於根目錄中的web.config,這是一件好事,因爲根目錄中的web.config位於源代碼管理中,並且是我們執行變換的文件。

我很高興將web.config包含在構建中,以便slowCheetah將其轉換並將其放入容器中。然後,我們必須手動將其從容器中取出,並將其放回到我們服務器的根級別,但是它有必要進行轉換。

有沒有人知道如何獲得轉換來運行我的web.config或讓它包含在構建過​​程中,所以slowCheetah可以發揮它的魔力?

謝謝!

更新

我修改了web.config文件的性質和它現在包含在構建,但是,轉換仍然沒有被應用到它。

生成操作:嵌入式的資源

複製到輸出導演:一直拷貝

回答

5

解決方案

我改名的Web.config在我們的源代碼控制Web.template.config和添加轉換Web.template.Debug.config和Web.template.Release.config

接下來,卸載項目文件並編輯.csproj xml添加以下元素

這會在根目錄中創建一個新的Web.config文件。 Woot!

<PropertyGroup> 
    <PrepareForRunDependsOn> 
    $(PrepareForRunDependsOn); 
    WebConfigTransform; 
    </PrepareForRunDependsOn> 
</PropertyGroup> 
<Target Name="WebConfigTransform"> 
    <Message Text="Configuration: $(Configuration): Web.template.$(Configuration).config" /> 
    <TransformXml Source="Web.template.config" 
       Transform="Web.template.$(Configuration).config" 
       Destination="Web.config" /> 
</Target> 
1

找到一個更好的解決方案 - 一個不重命名文件.template.config

將以下內容粘貼到您的Web Forms .csproj文件中。

<Target Name="BeforeBuild"> 
    <Delete Files="$(TEMP)\Web.TEMP.config" /> 
    <Copy SourceFiles="Web.config" DestinationFiles="$(TEMP)\Web.TEMP.config" /> 
    <TransformXml 
     Source="$(TEMP)\Web.TEMP.config" 
     Transform="Web.$(Configuration).config" 
     Destination="Web.config" /> 
    </Target> 
+0

這裏的問題是你創建了一些循環引用。假設你有一個插入元素的變換。它第一次運行它將採用web.config中的內容並插入新元素,然後在第二次運行轉換時插入重複元素。 另外,請記住,如果你的web.config在源代碼管理中,你是否希望它一直在改變? – Michael 2013-06-25 17:48:51

+0

同意循環問題。雖然我們只使用「SetAttribute」轉換,所以它對我們很有用。 – 2013-06-27 04:51:48

+0

源代碼管理下的Web.config對我們很重要。因此解決方案。但我同意你的解決方案是可取的。 – 2013-06-27 04:53:17

相關問題