2010-11-03 49 views
1

我是web.config轉換的新手,但它使用我的連接字符串。但是,我的轉換爲自定義節(nhibernate)沒有被應用。這裏的轉換文件:web.config轉換不適用於特殊部分

<?xml version="1.0"?> 

<!-- For more information on using web.config transformation visit http://go.microsoft.com/fwlink/?LinkId=125889 --> 

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform"> 
    <connectionStrings> 
    <add name="ApplicationServices" 
     connectionString="Data Source=.\SQLEXPRESS;Database=msmri_Users;UID=myuser;pwd=mypass;" 
     providerName="System.Data.SqlClient" xdt:Transform="SetAttributes" xdt:Locator="Match(name)"/> 
    </connectionStrings> 
    <appSettings> 
    <add key="TableStorageEndpoint" value="http://127.0.0.1:10002/devstoreaccount1" xdt:Transform="Remove" xdt:Locator="Match(key)" /> 

    </appSettings> 

...

<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     <property name="connection.connection_string" xdt:Transform="Replace" xdt:Locator="Match(name)"> 
     Data Source=.\SQLEXPRESS;Database=mydb;UID=myuser;pwd=mypass; 
     </property> 
    </session-factory> 
    </hibernate-configuration> 
</configuration> 

感謝所有的想法。謝謝!

+0

this(https://connect.microsoft.com/VisualStudio/feedback/details/558441/web-config-xdt-should-support-custom-config-sections?wa=wsignin1.0)表明這不是支持,這將是嚴重跛腳 – sydneyos 2010-11-03 21:19:41

回答

0

好吧,這不適用於所有情況,但根據我上面的評論,如果真的不支持,我的解決方案是在connectionStrings下添加連接字符串,並從hibernate配置部分引用它。然後我的轉換仍然在默認配置部分之一中完成。仍然會喜歡聽到這不是一個真正的限制。

最新更新:所以,這裏的問題是包含xmlns屬性的部分 - 配置轉換不會處理這些。在某些情況下的解決方法(例如,與assemblyBinding部分),其中有一個容納元件,是使用變換=父元素上「替換」,像這樣:

<runtime xdt:Transform="Replace"> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <qualifyAssembly partialName="MySql.Data" 
        fullName="MySql.Data, Version=6.2.4.0, Culture=neutral, PublicKeyToken=c5687fc88969c44d"> 
     </qualifyAssembly> 
    </assemblyBinding> 
    </runtime> 

這仍然無法正常工作對於我的nhibernate節,其唯一的父節點是配置元素本身,但是。 。 。

2

訣竅是將xml命名空間添加到轉換配置中。

這裏的Web.config文件的設置示例:

<section name="hibernate-configuration"  
     type="NHibernate.Cfg.ConfigurationSectionHandler, NHibernate" /> 
... 
<hibernate-configuration xmlns="urn:nhibernate-configuration-2.2"> 
    <session-factory> 
     ... 
     <property name="show_sql">true</property> 
     ... 
    </session-factory> 
</hibernate-configuration> 

現在添加XML命名空間到你的轉型的配置。 (例如Web.Release.config):

<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform" 
      xmlns:nhib="urn:nhibernate-configuration-2.2"> 
    ... 
    <nhib:hibernate-configuration> 
     <nhib:session-factory> 
      <nhib:property name="show_sql" xdt:Locator="Match(name)" xdt:Transform="SetAttributes">false</nhib:property> 
     </nhib:session-factory> 
    </nhib:hibernate-configuration> 

代碼應該按照你現在想要的方式替換。