我正在使用Visual Studio 2010的“发布”功能的配置文件替换功能,如in this article所述。我想使用MSBuild / Hudson自动执行此操作。有人知道怎么做这个吗?
我喜欢它是如何工作的,但是如果我不能自动化它,我将不得不切换到XmlMassUpdate或类似的。
答案 0 :(得分:5)
要转换配置文件,您必须执行TransformWebConfig
目标。
此目标需要两个文件Web.config
和Web.$(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 中,您可以在构建中添加构建步骤,或者创建一个配置如下的专用作业:
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