Запустите MSBuild на csproj и не примените преобразование web.config. - PullRequest
4 голосов
/ 25 августа 2011

Я использую Team City для управления нашим развертыванием.

Итак, я создал шаг MSBuild для компиляции нашего файла .sln.

После сборки у меня есть три файла в выходном каталоге:

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

Это означает, что задача msbuild не преобразует web.config.

Но когда я использую функцию публикации в visual studio, преобразование выполняется.

Итак, в чем разница между msbuild и publish? И как я могу заставить мою задачу msbuild преобразовать конфигурацию?

1 Ответ

1 голос
/ 30 августа 2011

Я нашел свой ответ здесь

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

Спасибо

...