2011-07-08 18 views
0

新しいバージョンのインストールの一環として、必要に応じて既存のweb.configファイルを調整するweb.config.deltaファイルがあります。今、AppSettingのキーを追加/更新/削除する方法を知っています(これについては私が知っているすべての記事がそうです)。しかし、私はどのように新しいセクション要素を追加し、新しいセクショングループを追加するかわかりません。xmlmassupdate(msbuild)を使用してweb.configに新しいセクションを追加する方法

ie。これは私のweb.configのすべての新しいものです。それを「デルタ」として適用するためには、何を変更する必要がありますか?

<?xml version="1.0"?> 
<configuration xmlns:xmu="urn:msbuildcommunitytasks-xmlmassupdate"> 

<configSections> 
<section xmu:key="name" name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" /> 
<section xmu:key="name" name="securityConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Configuration.SecuritySettings, Microsoft.Practices.EnterpriseLibrary.Security, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" /> 

<sectionGroup name="authorization" type="Company.Security.Configuration.AuthorizationSectionGroup, Company.Library"> 
     <section name="rowLevelSecurity" type="Company.Security.Configuration.RowLevelAuthorizationSection, Company.Library"/> 
     <section name="typeBasedSecurity" type="Company.Security.Configuration.TypeAuthorizationSection, Company.Library"/> 
    </sectionGroup> 

</configSections> 

<enterpriseLibrary.ConfigurationSource selectedSource="System Configuration Source"> 
    <sources> 
     <add name="System Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.SystemConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 
     <add name="Security-FileBasedConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     filePath="Config/Enterprise-Security.config" /> 
    </sources> 
    <redirectSections> 
     <add sourceName="Security-FileBasedConfigurationSource" name="securityConfiguration" /> 
    </redirectSections> 
    </enterpriseLibrary.ConfigurationSource> 

    <authorization> 
    <rowLevelSecurity defaultProvider="SqlMembershipRowLevelSecurity"> 
     <providers> 
     <add name="SqlMembershipRowLevelSecurity" type="Company.Security.DataAuthorization.SqlMembershipRowLevelSecurityProvider, Company.Library" applicationName="app1" connectionStringName="SecurityConnection"/> 
     </providers> 
    </rowLevelSecurity> 
    <typeBasedSecurity defaultProvider="SqlInPlaceTypeBasedSecurity"> 
     <providers> 
     <add name="SqlInPlaceTypeBasedSecurity" type="Company.Security.Providers.SqlEntityTypeFunctionTypeSecurityProvider, Company.Common" applicationName="app1" connectionStringName="SecurityConnection"/> 
     </providers> 
    </typeBasedSecurity> 
    </authorization> 

</configuration> 

私はこの情報について簡単な情報を見つけることはできないようですが、間違った用語でGoogleで検索しています。

私は同じように追加のビットを交換する必要があります:

<add name="System Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.SystemConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 

<add xmu:key="name" name="System Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.SystemConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" xmu:action="add" /> 

または私はセクション、sectiongroupとenterpriseLibrary.ConfigurationSource要素のために同じことを行うために持っています?

ありがとうございます!

+1

MSDeployを使ってこれを解決することを検討しましたか? [MIX10のScott Hanselmanの素晴らしいデモ](http://channel9.msdn.com/events/MIX/MIX10/FT14)があります。 – Filburt

+0

提案をお寄せいただき、ありがとうございます。このMass XML Updateを使用する確立されたビルドプロセスがあります。ありがたいことに、マージを行う単体テストを見つけたので、試行錯誤して私が何をする必要があるのか​​理解することができました。でも、他のデモをチェックしてみてください:) – Jen

+0

ビデオは面白いですが、VS2010はまだ使用していません。 XML-Document-Transformを使用する代わりに、XML一括更新で使用する構文を使用します。どのようなビットを置く必要があるのか​​を覚えているのです。:)私たちの違いは、コンフィギュレーションマネージャモード(例えば、デバッグ/リリース)ではなく、各クライアントに固有です。 – Jen

答えて

0

ありがたいことに、マージ後にXMLをチェックできるメモリでマージを行っている単体テストが見つかりました。だから試行錯誤を使って私は以下を必要とした:

<?xml version="1.0"?> 
<configuration xmlns:xmu="urn:msbuildcommunitytasks-xmlmassupdate" xmlns:un="http://schemas.microsoft.com/practices/2010/unity"> 

    <configSections> 
    <section xmu:key="name" name="enterpriseLibrary.ConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.ConfigurationSourceSection, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" xmu:action="add" /> 
    <section xmu:key="name" name="securityConfiguration" type="Microsoft.Practices.EnterpriseLibrary.Security.Configuration.SecuritySettings, Microsoft.Practices.EnterpriseLibrary.Security, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" requirePermission="true" xmu:action="add"/> 

    <sectionGroup xmu:key="name" name="authorization" type="Company.Security.Configuration.AuthorizationSectionGroup, Company.Library" xmu:action="add"> 
     <section xmu:key="name" name="rowLevelSecurity" type="Company.Security.Configuration.RowLevelAuthorizationSection, Company.Library" xmu:action="add"/> 
     <section xmu:key="name" name="typeBasedSecurity" type="Company.Security.Configuration.TypeAuthorizationSection, Company.Library" xmu:action="add"/> 
    </sectionGroup> 

    </configSections> 

    <enterpriseLibrary.ConfigurationSource selectedSource="System Configuration Source"> 
    <sources> 
     <add xmu:key="name" name="System Configuration Source" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.SystemConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" xmu:action="add" /> 
     <add xmu:key="name" name="Security-FileBasedConfigurationSource" type="Microsoft.Practices.EnterpriseLibrary.Common.Configuration.FileConfigurationSource, Microsoft.Practices.EnterpriseLibrary.Common, Version=5.0.414.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 
     filePath="Config/Enterprise-Security.config" xmu:action="add" /> 
    </sources> 
    <redirectSections> 
     <add xmu:key="name" sourceName="Security-FileBasedConfigurationSource" name="securityConfiguration" xmu:action="add" /> 
    </redirectSections> 
    </enterpriseLibrary.ConfigurationSource> 

    <authorization> 
    <rowLevelSecurity defaultProvider="SqlMembershipRowLevelSecurity"> 
     <providers> 
     <add xmu:key="name" name="SqlMembershipRowLevelSecurity" type="Company.Security.DataAuthorization.SqlMembershipRowLevelSecurityProvider, Company.Library" applicationName="app1" connectionStringName="SecurityConnection" xmu:action="add" /> 
     </providers> 
    </rowLevelSecurity> 
    <typeBasedSecurity defaultProvider="SqlInPlaceTypeBasedSecurity"> 
     <providers> 
     <add xmu:key="name" name="SqlInPlaceTypeBasedSecurity" type="InPlace.Security.Providers.SqlEntityTypeFunctionTypeSecurityProvider, InPlace.Common" applicationName="app1" connectionStringName="SecurityConnection" xmu:action="add"/> 
     </providers> 
    </typeBasedSecurity> 
    </authorization> 

    <un:unity xmlns="http://schemas.microsoft.com/practices/2010/unity"> 
    <un:container> 
     <un:register xmu:key="type" type="Company.Interface.Logging.ILoggingProvider, Company.Library" mapTo="Company.NHibernate.LoggingProvider, Company.NHibernate" xmu:action="add"> 
     <un:lifetime type="singleton" /> 
     </un:register> 
     <un:register xmu:key="type" type="Company.Interface.Security.ITaskAuthorizationManager, Company.Library" mapTo="Company.EnterpriseLibrary.Security.TaskAuthorizationManager, Company.EnterpriseLibrary" xmu:action="add" > 
     <un:lifetime type="singleton" /> 
     </un:register> 
     <un:register xmu:key="type" type="Company.Interface.Security.ITypeAuthorizationManager, Company.Library" mapTo="Company.EnterpriseLibrary.Security.TypeAuthorizationManager, Company.EnterpriseLibrary" xmu:action="add" > 
     <un:lifetime type="singleton" /> 
     </un:register> 
     <un:register xmu:key="type" type="Company.Interface.Security.IPropertyAuthorizationManager, Company.Library" mapTo="Company.EnterpriseLibrary.Security.PropertyAuthorizationManager, Company.EnterpriseLibrary" xmu:action="add" > 
     <un:lifetime type="singleton" /> 
     </un:register> 
     <un:register xmu:key="type" type="Company.Interface.Security.IRoleAuthorizationManager, Company.Library" mapTo="Company.Web.Security.RoleAuthorizationManager, Company.Library" xmu:action="add"> 
     <un:lifetime type="singleton" /> 
     </un:register> 
     <un:register xmu:key="type" type="Company.Interface.Security.IRowLevelAuthorizationManager, Company.Library" mapTo="Company.Web.Security.RowLevelAuthorizationManager, Company.Library" xmu:action="add"> 
     <un:lifetime type="singleton" /> 
     </un:register> 
     <un:register xmu:key="type" name="TypeSecurityProvider" type="Company.Security.TypeBasedAuthorization.TypeSecurityProvider, Company.Library" mapTo="Company.Security.Providers.SqlEntityTypeFunctionTypeSecurityProvider, Company.Common" xmu:action="add"/> 
    </un:container> 
    </un:unity> 

</configuration> 
関連する問題