Как развернуть сайт, используя визуальный профиль публикации и скрипт 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>
И вот две версии сценария моего торта:
Я попытался опубликовать свой веб-сайт, используя общедоступный профиль (CakeProfile.pubxml). Это не работает вообще веб-сайт публикуется в папку внутри папки проекта.
MSBuild("./CakeWebSite.sln", settings => settings.WithProperty("DeployOnBuild", "true") .WithProperty("PublishProfile", "CakeProfile"));
Это не сработало, поэтому я попытался установить те же свойства, что и в файле публикации:
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");