2

隨着一些自定義邏輯,我在我的Asp Mvc 4應用程序中爲我的網絡配置添加了一個模板。當我需要修改web.config文件時,我正在編輯它的模板文件,並且在運行應用程序時,更改將在Web配置文件中被替換。問題是,當我通過nuget添加一個需要修改web配置文件的包時,我正在丟失這些設置,因爲所有內容都被我的模板文件覆蓋。有沒有辦法強制Nuget包修改一些自定義的XML文件,而不是原來的網絡配置文件。例如,要修改mytemplate.xml而不是web.config.xmlNuget包添加他們的設置在自定義XML文件,而不是Web /應用程序配置文件

我在這方面很新,找不到解決方案。據我瞭解需要修改web.config文件的軟件包隨web.config.transform文件合併所需的字段,我的唯一解決方案是手動將軟件包中添加到我的web配置文件的設置替換爲模板文件。還有其他解決方案嗎?謝謝!

+0

您是否找到解決方案?我有自定義web.config轉換完全相同的問題。 – magnattic 2013-10-22 15:38:04

+0

不,我無法找到辦法做到這一點。 – Mdb 2013-10-23 07:01:08

回答

1

你正在使用你的web.config文件做兩個不同的東西:

  1. 爲的NuGet包靜態配置
  2. 爲您的網站
  3. 動態配置

web.config文件中允許你在外部文件中定義一些設置並導入它們 - 例如

<configuration> 
    ... 
    <appSettings configSource="appSettings.config" /> 
    ... 
    </configuration> 

這是appSettings.config:

<appSettings> 
    <add key="umbracoDbDSN" value="..."/> 
    <add key="DefaultInstanceName" value="..."/> 
    <add key="aspnet:MaxHttpCollectionKeys" value="..."/> 
    </appSettings> 

這是不可能的,你需要完全重新生成你的web.config每次構建,大概只有特定的部分 - 如果這些數據不衝突的那麼這種方法可以爲您提供應用程序所需的靈活性。

OR B計劃

packages.config列出所有活動的包在您的解決方案

包存儲在一個本地文件的web.config設置: /包/包/ content/Web.config.transform

您可以擴展構建web.config文件的過程:

  1. 枚舉活動包
  2. 檢查內容/ Web.config.transform文件
  3. 合併這些文件到您的web.config構建流水線

我看不到任何方式重新配置nuget將配置推送到不同的文件中。

+0

重讀您的文章後,我想我理解您建議的外包某些配置部分的方法。我會嘗試一下,如果這是一個可行的解決方案,但是因爲預測一個軟件包會改變什麼配置部分並不總是可能的,所以我更喜歡一個解決方案,告訴nuget使用替代的xml文件進行轉換。 – magnattic 2013-10-25 13:04:30

相關問題