2017-01-11 4 views
0

Я настроил свою сборку на Visual Studio Team Services, но выглядит так: преобразование Web.config моего Web.Release.config не работает, и я получаю только стандартный файл Web.config. Что я делаю неправильно или какой параметр я пропускаю.Преобразование Web.config во время сборки

enter image description here

+0

Я никогда не играл с ним с TFS построить, но внутри визуальной студии преобразования только будет применяться, когда вы делаете 'deploy' конфиг, который создается когда вы просто выполняете 'Build' - это нетрансформированная версия. –

+0

выполняет команду вроде msbuild.exe «myProject.sln»/p: Конфигурация = Release/p: platform = «Любой процессор» /p:VisualStudioVersion="15.0 " – cpiock

+0

См. Это quuestion и ответ http: // stackoverflow. com/questions/13920146/using-msbuild-exe-to-publish-a-asp-net-mvc-4-project-with-the-cmd-line –

ответ

0

Профиль хочу работать для меня на сервере сборки. Я нашел это решение, которое работает для меня.

/p:outdir=$(build.artifactstagingdirectory)\Release /p:UseWPP_CopyWebApplication=true /p:PipelineDependsOnBuild=false 

Эта часть делает разницу:

/p:UseWPP_CopyWebApplication=true 
+0

Поскольку вы решили проблему самостоятельно, вы можете отметить ее как ответ. –

3

Для преобразования произойдет MSBuild необходимо "развернуть" решение. Я не уверен, что наиболее правильный способ сделать это, но простое решение будет добавить

/p:DeployOnBuild=true /p:PublishProfile=SomeProfile 

к опции MSBuild Аргументы. Затем вы можете захватывать файлы из любого места, где вы настроили профиль публикации, чтобы поместить их и использовать их во время развертывания.

Вот очень простой пример файла SomeProfile.pubxml, который помещает опубликованные файлы в каталог промежуточного хранения артефакта.

<?xml version="1.0" encoding="utf-8"?> 
<!-- 
This file is used by the publish/package process of your Web project. You can customize the behavior of this process 
by editing this MSBuild file. In order to learn more about this please visit http://go.microsoft.com/fwlink/?LinkID=208121. 
--> 
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <PropertyGroup> 
    <WebPublishMethod>FileSystem</WebPublishMethod> 
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration> 
    <LastUsedPlatform>Any CPU</LastUsedPlatform> 
    <SiteUrlToLaunchAfterPublish /> 
    <LaunchSiteAfterPublish>False</LaunchSiteAfterPublish> 
    <ExcludeApp_Data>False</ExcludeApp_Data> 
    <publishUrl>$(BUILD_ARTIFACTSTAGINGDIRECTORY)\Release</publishUrl> 
    <DeleteExistingFiles>False</DeleteExistingFiles> 
    </PropertyGroup> 
</Project> 

Используя команду арг MSBuild в TFS

/p:DeployOnBuild=true /p:PublishProfile=SomeProfile 

сбросив /p:outDir.

+0

hmm на моем сервере сборки Мне не нужен файл публикации, потому что копирование на сервер azure делает управление релизами Visual Studio Team Service – cpiock

+0

Возможно, создайте профиль, который переносит преобразованные файлы в '$ (BuildArtifactStagingDirectory) \ Release' и избавится от'/p: outDir' на вашем этапе сборки. Профили - это только скрипты MSBuild и должны иметь возможность использовать глобальные переменные. –

+0

ОК. локально, установив фиксированный путь, в котором он работает. как я могу установить $ (BuildArtifactStagingDirectory) в конфигурации профиля? – cpiock

Смежные вопросы