2010-12-22 70 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不会自动执行它,所以将不会匹配...