Сборка с использованием MSBuild с преобразованиями web.config как в локальной среде, так и в среде Azure Devops - PullRequest
1 голос
/ 18 апреля 2019

Я пытаюсь построить как локально, так и на конвейере компоновки DevOps Azure (который использует скрипт сборки Cake) проект ASP.NET Framework в решении и опубликовать его. Наша старая версия была построена с помощью следующей команды:

MSBUILD /verbosity:%VERBOSITY% "%WORKSPACE%\src\Foundation\Security\OurProduct.SAML/OurProduct.SAML.csproj" /p:DeployOnBuild=true /p:Configuration=%CONFIGURATION% /p:WebPublishMethod=FileSystem /p:PublishProfile=%CONFIGURATION% /p:publishUrl=%WORKSPACE%\samlbuild\_PublishedWebsites\OurProduct.SAML

Я добавил его в Cake и сделал много разных правок в своем тесте. Вот текущая версия:

MSBuild(
    SAMLProject, 
    new MSBuildSettings()
        .WithProperty("Configuration", configuration)
        .WithProperty("DeployOnBuild", "true")
         //.WithProperty("PublishProfile", configuration)
        .WithProperty("WebPublishMethod", "FileSystem")
        .WithProperty("OutDir", SAMLDeployDirectory)
    );

Удаляя или комментируя строку PublishProfile, я могу создавать локально, но не могу использовать размещенный агент VS2017 в DevOps Azure. Я получаю следующую ошибку на размещенном сервере:

"D:\a\1\s\PPUXL\src\Foundation\Security\OurProduct.SAML\OurProduct.SAML.csproj" (Build target) (1) ->
(Web_config_AfterBuild target) -> 
  D:\a\1\s\PPUXL\src\Foundation\Security\OurProduct.SAML\OurProduct.SAML.csproj(511,5): error : Could not write Destination file: Could not find a part of the path 'D:\a\1\s\PPUXL\src\Foundation\Security\OurProduct.SAML\bin\Web.config'.

Я видел этот веб-сайт (https://blog.todotnet.com/2013/11/deploy-website-to-windows-azure-with-web-config-transformations/)) и пробовал их решение вместе с некоторыми другими решениями, которые я видел здесь, при переполнении стека. Когда я указываю PublishProfile, он не собирается локально, поэтому я не осмелюсь подтолкнуть его к источнику. для тестирования на сервере. Я получаю следующую ошибку локально при указании профиля конфигурации "Dev" в качестве профиля публикации:

"C:\git\OurProduct\PPUXL\src\Foundation\Security\OurProduct.SAML\OurProduct.SAML.csproj" (Build target) (1) ->
(WebFileSystemPublish target) ->
  C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\Microsoft\VisualStudio\v15.0\Web\Deploy\Microsoft.Web.Publishing.Deploy.FileSystem.targets(93,5): error MSB3191: Unable to create directory "D:\jenkins\current\Stage\samlidp". Could not f
ind a part of the path 'D:\jenkins\current\OurProduct\samlidp'. [C:\git\OurProduct\PPUXL\src\Foundation\Security\OurProduct.SAML\OurProduct.SAML.csproj]

У меня есть все файлы конфигурации и их преобразования в корневом каталоге проекта. Итак, у меня есть следующие вопросы:

  1. Чего мне не хватает в моем скрипте Cake?
  2. Нужно ли мне изменять файл проекта или преобразовывать веб-конфигурации?
  3. Как мне построить свой код из его папки, но вывести его в каталог по своему выбору как локально, так и на сервере DevOps Azure, чтобы я мог создать артефакт публикации в AzDo?
...