VS2010构建部署包+ sectionGroup / custom settings + SetParameters.xml

时间:2011-09-02 20:52:38

标签: msbuild msdeploy web-deployment-project web-deployment web-project

我一直在使用Visual Studio 2010中的“Build Deployment Package”(简称BDP)几个月了。它运作良好,完成了我们想要的基本要求。

我决定更进一步,弄清楚如何获取自定义配置,以便可以在BDP生成的Project.SetParameters.xml文件中进行修改。我们使用它的方式是构建此部署包,并将其提供给客户服务器。每个服务器可能不同,因此我们将SetParameters.xml保留在服务器上,稍后将替换zip文件以进行升级。我们使用WebDeploy工具将其与Build Deployment Package创建的提供的cmd文件一起部署。

我开始研究这个转换网络配置非常酷,但我不认为我完全得到它。我可以让它在web.config中执行正常的项目(例如连接字符串,Web服务器设置等),但是我不能让我的生活让它为其他DLL的一部分生成配置部分的参数包含在web.config中。例如:

例如。说这是引用其他几个程序集的Web项目的web.config:

<?xml version="1.0"?>
    <configuration>
      <configSections>
        <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
          <section name="SomeAssembly.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
        </sectionGroup>
      </configSections>
      <applicationSettings>
        <SomeAssembly.Properties.Settings>
          <setting name="ExportLocation" serializeAs="String">
            <value>C:\MediaExports\</value>
          </setting>
        </SomeAssembly.Properties.Settings>
        </applicationSettings>
    </configuration>

我的变压器是:

<?xml version="1.0"?>
<configuration xmlns:xdt="http://schemas.microsoft.com/XML-Document-Transform">
  <configSections>
    <sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
      <section name="SomeAssembly.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
    </sectionGroup>
  </configSections>

  <SomeAssembly.Properties.Settings>
    <setting name="ExportLocation" value="[MakeMeSetParameter.xml-Entry]" serializeAs="String" xdt:Transform="SetAttributes" xdt:Locator="Match(value)"/>
  </SomeAssembly.Properties.Settings>

</configuration>

示例project.xml(不是来自上面,但为我的项目生成了什么):

    <?xml version="1.0" encoding="utf-8"?>
    <parameters>
      <setParameter name="IIS Web Application Name" value="SomeIISNameHere" />
      <setParameter name="SomeAssemblySetting-SomeDescriptionOddPlaceforit" value="TheValueToBePlaced" />
<setParameter name="SomeGeneratedValueIwant" value="TheNewMediaExportLocation"/>
    </parameters>

我无法弄清楚变换器web.config中的内容,以使其为Project.SetParameters.xml生成输出。 “标记化”参数。

现在,我知道我并没有完全理解这一点,但我似乎无法找到任何人使用项目引用的其他程序集的自定义配置的示例。几乎所有示例似乎都与连接字符串和其他常见的web.config项有关。

最近我能找到我想要做的是http://sedodream.com/2010/11/11/ASPNETWebApplicationPublishPackageTokenizingParameters.aspx然而它只是关于连接线,而不是我想要设置的其他组件的自定义设置参数。我想在web.config中为任何东西创建这些标记。

所以,我的问题是:我们如何配置变换器配置文件,以便BDP可以为web.config中的自定义配置生成带有额外setParameter节点的SetParameters.xml?

1 个答案:

答案 0 :(得分:4)