我正在使用Team City来处理我们的部署。
所以我创建了一个MSBuild步骤来编译我们的.sln文件。
构建之后,我在输出目录中有这三个文件:
这意味着msbuild任务不会转换web.config。
但是当我在visual studio中使用发布功能时,转换就完成了。
那么,msbuild和发布之间的区别是什么?我如何强制我的msbuild任务转换配置?
答案 0 :(得分:1)
我在这里找到了答案
http://cgeers.com/2011/08/21/web-config-transformation-using-teamcity/
这是我的任务:
<Target Name="Publish">
<RemoveDir Directories="$(DestinationPath)" ContinueOnError="true" />
<MSBuild Projects="$(SourcePath)/$(ProjectFile)" Targets="Rebuild;ResolveReferences;_CopyWebApplication" Properties="WebProjectOutputDir=$(DestinationPath);OutDir=$(DestinationPath)\bin\" />
<TransformXml Source="$(SourcePath)/Web.Config" Transform="$(SourcePath)/Web.$(Configuration).config" Destination="$(DestinationPath)/Web.config" />
<ItemGroup>
<FilesToDelete Include="$(DestinationPath)/Web.*.config"/>
</ItemGroup>
<Delete Files="@(FilesToDelete)"/>
</Target>
你这样称呼它
<MSBuild Projects="$(MSBuildProjectFullPath)"
Targets="Publish"
Properties="Configuration=Release;ProjectFile=WebProject.csproj;SourcePath=C:\webproject\;DestinationPath=C:\inetpub\wwwroot\app\"/>
谢谢