2010-12-22 89 views
2

我想在.NET 4上運行的ASP.NET MVC 2項目中使用Web.config轉換。但是,我有一個問題:ASP.NET MVC 2和額外的Web.config文件中的Web.config轉換

// Root Web.config 
<add name="MyDB" connectionString="default...default" /> 


// Root Web.Debug.config 
<add name="MyDB" connectionString="debug...debug" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" /> 

// Root Web.Release.config 
<add name="MyDB" connectionString="release... release" xdt:Transform="SetAttributes" xdt:Locator="Match(name)" /> 

我不斷收到此錯誤:

Warning No element in the source document matches '/configuration/add[@name='MyDB']' C:\filePath\Web.Release.config

我縮小下來到瀏覽文件夾中的web.config文件。如果我給它一個connectionString,比如根Web.config文件中的一個,比一切都好,但這意味着我必須維護兩個Web.config文件。有沒有解決這個問題的方法?難道我做錯了什麼?

回答

3

不知道爲什麼web.config中的views文件夾被牽連,但從你得到的錯誤聽起來像你有web.config中的元素和轉換配置文件之間的不匹配。

在web.config中,假設<add /><connectionStrings />一個孩子,你會怎麼做:

<?xml version="1.0" encoding="utf-8"?> 

<configuration> 

... 

    <connectionStrings> 
     <add name="SomeName" providerName="System.Data.SqlClient" connectionString="SomeConnectionString" /> 
    </connectionStrings> 

... 

</configuration> 

和web.debug.config

<?xml version="1.0" encoding="utf-8"?> 

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 

... 

    <connectionStrings> 
     <add xdt:Locator="Match(name)" xdt:Transform="SetAttributes(connectionString)" name="SomeName" connectionString="SomeOtherConnectionString" /> 
    </connectionStrings> 

... 

</configuration> 
+0

好的,在[SetAttributes(connectionString)]中添加parens不起作用並拋出一個錯誤。但是,我注意到我的問題是我沒有在調試/發佈配置文件中用包裝。我突然意識到,當我看着你的例子。因此,+1爲你舉個例子。 :) – 2010-12-23 02:11:41

1

正如我已經說過: 別t忘記從原始的「web.config」手動複製「配置」的所有其他屬性,因爲它似乎VS2012不會自動執行它,所以將不會匹配...