Как развернуть сайт, используя визуальный профиль публикации и скрипт Cake

Я хотел бы использовать скрипт Cake для автоматизации процесса сборки и публикации. Я начал некоторые тесты с локальной публикацией, но мне не удалось заставить мой скрипт Cake использовать профиль публикации, который я создал в Visual Studio. Это вообще возможно?

Вот мой файл профиля публикации:

<?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 https://go.microsoft.com/fwlink/?LinkID=208121. 
-->
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <PropertyGroup>
  <WebPublishMethod>FileSystem</WebPublishMethod>
  <LastUsedBuildConfiguration>Debug</LastUsedBuildConfiguration>
  <LastUsedPlatform>Any CPU</LastUsedPlatform>
  <SiteUrlToLaunchAfterPublish />
  <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
  <ExcludeApp_Data>False</ExcludeApp_Data>
  <publishUrl>C:\Users\radoslaw.stolarczyk\Desktop\CakeWebSite</publishUrl>
  <DeleteExistingFiles>True</DeleteExistingFiles>
 </PropertyGroup>
</Project>

И вот две версии сценария моего торта:

  1. Я попытался опубликовать свой веб-сайт, используя общедоступный профиль (CakeProfile.pubxml). Это не работает вообще веб-сайт публикуется в папку внутри папки проекта.

    MSBuild("./CakeWebSite.sln", settings =>
    settings.WithProperty("DeployOnBuild", "true")
    .WithProperty("PublishProfile", "CakeProfile"));
    
  2. Это не сработало, поэтому я попытался установить те же свойства, что и в файле публикации:

    MSBuild("./CakeWebSite.sln", new MSBuildSettings()
     .WithProperty("WebPublishMethod", "FileSystem")
     .WithProperty("LastUsedBuildConfiguration", "Debug")
     .WithProperty("LastUsedPlatform", "Any CPU")
     .WithProperty("ExcludeApp_Data", "False")
     .WithProperty("publishUrl", cakePublishPath)
     .WithProperty("OutDir", cakePublishPath)
     .WithProperty("DeleteExistingFiles", "True")
    

Второй вариант работал лучше, но все еще не ожидался. Вывод сборки из сценария Cake отличается от варианта публикации Visual Studio, как показано на рисунке ниже:

Опубликовать результаты

Может быть, это не имеет большого значения, например, с Cake, я получил precompiledApp.config, а с Visual Studio я этого не делаю, но все же я хотел бы получить один и тот же вывод из обоих методов публикации.

Поэтому мой вопрос: возможно ли использовать профиль публикации из Visual Studio в скрипте Cake или получить тот же вывод (из Cake и VS) и как?

1 ответ

У меня есть конфигурация ниже, которая работает для меня. Я использую файл проекта вместо решения.

MSBuild(prjFile, new MSBuildSettings()
  .UseToolVersion(MSBuildToolVersion.VS2017)
    .WithTarget("Package")
  .WithProperty("Configuration",configuration)
  .WithProperty("_PackageTempDir", stagingDir)
  .WithProperty("SolutionDir","../")

где конфигурация:

var configuration = Argument("configuration", "Release");
Другие вопросы по тегам