在csproj上运行MSBuild不会应用web.config转换

时间:2011-08-25 13:55:50

标签: msbuild web-config

我正在使用Team City来处理我们的部署。

所以我创建了一个MSBuild步骤来编译我们的.sln文件。

构建之后,我在输出目录中有这三个文件:

  • Web.config
  • Web.Release.config
  • Web.Debug.config

这意味着msbuild任务不会转换web.config。

但是当我在visual studio中使用发布功能时,转换就完成了。

那么,msbuild和发布之间的区别是什么?我如何强制我的msbuild任务转换配置?

1 个答案:

答案 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\"/>

谢谢