_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>
Это работает, но с одной проблемой. Разница между этим выводом и выводом, генерируемым при использовании пункта меню "Опубликовать" в Visual Studio, заключается в том, что преобразование Web.Release.config не применяется к файлу Web.config при использовании метода MSBuild. Вместо этого Web.config, Web.Release.config и Web.Debug.config все копируются.
Любые идеи приветствуются.
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 теперь является устаревшим, вы все равно можете использовать его, установив для $ (UseWPP_CopyWebApplication) значение true. По умолчанию теперь он изменяется на использование цели _WPPCopyWebApplication в Microsoft.Web.Publish.targets. Это позволяет использовать веб-конфигурацию trsnaformation. [все так]
Ооо UseWPP_CopyWebApplication
по умолчанию false (строка 27), что имеет смысл, если вы не хотите нарушать существующий _CopyWebApplication
, Так что для установки его в значение true будут фактически использоваться новые материалы WPP, представленные в VS 2010. Я предпочитаю это вместо вызова "скрытой" цели.