_CopyWebApplication с web.config преобразованиями

Я пытаюсь иметь свое веб-приложение, автоматически Публикуют, когда Сборка конечных версий выполняется. Я делаю это использование цели _CopyWebApplication. Я добавил следующее к своему .csproj файлу:

  <!-- Automatically Publish in Release build. -->
  <Import Project="$(MSBuildExtensionsPath)\Microsoft\VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets" />
  <Target Name="AfterBuild">
    <RemoveDir Directories="$(ProjectDir)..\Output\MyWeb" ContinueOnError="true" />
    <MSBuild Projects="MyWeb.csproj" Properties="Configuration=Release;WebProjectOutputDir=$(ProjectDir)..\Output\MyWeb;OutDir=$(ProjectDir)bin\" Targets="ResolveReferences;_CopyWebApplication" />
  </Target>

Это работает, но с одной проблемой. Различие между этим выводом и выводом, сгенерированным при использовании пункта меню Publish в Visual Studio, то, что сеть. Преобразование Release.config не применяется к файлу Web.config при использовании метода MSBuild. Вместо этого Web.config, сеть. Release.config и сеть. Debug.config все копируются.

Любые идеи ценятся.

43
задан Sayed Ibrahim Hashimi 21 April 2012 в 23:23
поделиться

1 ответ

Я бился головой об стену по этому поводу. Полазив по целям MSBuild, я наткнулся на что-то очень "непрозрачное".

Короче говоря: попробуйте использовать новый _WPPCopyWebApplication. Это работает на моей машине. Старый _CopyWebApplication не поддерживает преобразования по унаследованным причинам. Вот что я делаю:

msbuild /t:Rebuild /p:OutDir=..\publish\;Configuration=Release;UseWPP_CopyWebApplication=True;PipelineDependsOnBuild=False MvcApplication1\MvcApplication1.csproj

# UseWPP_CopyWebApplication = true requires PipelineDependsOnBuild = false

Длинная история:

Посмотрите на VisualStudio\v10.0\WebApplications\Microsoft.WebApplication.targets. Это так неправильно. Найдите _CopyWebApplication в строке 70. Комментарий:

Оригинальный _CopyWebApplication теперь Legacy, вы все еще можете использовать его, установив $(UseWPP_CopyWebApplication) в true. По умолчанию теперь используется цель _WPPCopyWebApplication в Microsoft.Web.Publish.targets. Это позволяет использовать веб-конфигурацию trsnaformation. [все sic]

Ооо. UseWPP_CopyWebApplication по умолчанию имеет значение false (строка 27), что имеет смысл, если вы не хотите ломать существующую _CopyWebApplication. Установка этого значения в true фактически будет использовать новые возможности WPP, представленные в VS 2010. Я предпочитаю это, а не вызов "скрытой" цели.

74
ответ дан 26 November 2019 в 22:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: