自动化VS 2010“发布”配置文件替换

时间:2010-06-04 19:46:07

标签: visual-studio-2010 msbuild hudson

我正在使用Visual Studio 2010的“发布”功能的配置文件替换功能,如in this article所述。我想使用MSBuild / Hudson自动执行此操作。有人知道怎么做这个吗?

我喜欢它是如何工作的,但是如果我不能自动化它,我将不得不切换到XmlMassUpdate或类似的。

3 个答案:

答案 0 :(得分:5)

说明

要转换配置文件,您必须执行TransformWebConfig目标。

此目标需要两个文件Web.configWeb.$(Configuration).config并生成Web.config。生成的文件是当前配置的原始文件的转换版本。

此文件在文件夹obj\$(Configuration)\TransformWebConfig

中生成

用法

你没有真正解释你想要实现的目标,所以这里有一个基本用法,一个在给定文件夹中生成转换配置文件的作业。

导入*.csproj

后,在项目文件Microsoft.WebApplication.targets的末尾添加以下内容
<PropertyGroup>
  <!-- Directory where your web.config will be copied -->
  <TransformedWebConfigDestination>$(MSBuildProjectDirectory)</TransformedWebConfigDestination>
</PropertyGroup>

<!--
  This target transforms the web.config based on current configuration and
  put the transformed files in $(TransformedWebConfigDestination) folder
-->
<Target Name="ConfigSubstitution">
  <CallTarget Targets="TransformWebConfig"/>

  <ItemGroup>
    <TransformedWebConfig Include="obj\$(Configuration)\TransformWebConfig\Web.config"/>
  </ItemGroup>

  <!-- Copy the transformed web.config to the configured destination -->
  <Copy SourceFiles="@(TransformedWebConfig)"
        DestinationFolder="$(TransformedWebConfigDestination)"/>
</Target>

Hudson 中,您可以在构建中添加构建步骤,或者创建一个配置如下的专用作业:

  • MsBuild构建文件:Your csproj file.
  • 命令行参数:/t:ConfigSubstitution /p:Platform=AnyCpu;Configuration=Test;TransformedWebConfigDestination=DestinationFolder

答案 1 :(得分:3)

编辑您的web project.csproj

下的

<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">

添加 -
<UseMsDeployExe>True</UseMsDeployExe>

查看Build输出(确保VS Tools - 选项 - 项目和解决方案 - 构建和运行 - MSBuild输出详细程度 - 详细信息)

您应该能够看到VS用于生成包的msdeploy命令。我的理解是VS实际上使用Web Platform Pipeline API和.target文件在使用MSBuild构建时实际生成部署包,并且此命令改为使用MsDeploy。

这个东西需要文档,非常令人沮丧。

答案 2 :(得分:1)

我在Hudson中使用它来定位Release:

/Property:Configuration=Release

确切的设置是:

Build
MSBuild Version: msbuild-4 (configured to point to v4 msbuild)
MsBuild Build File: project_name.sln
Command Line Arguments: /Property:Configuration=Release

您可以通过运行类似的东西(因为您的.NET框架版本可能不同)在项目目录中对此进行测试:

%SYSTEMROOT%\Microsoft.NET\Framework\v4.0.30319\msbuild project.sln /Property:Configuration=Release