MSBuild игнорирует GatherAllFilesToPublish? - PullRequest
0 голосов
/ 22 ноября 2018

Итак, я создал профиль публикации для своего веб-приложения.Я сделал это с графическим интерфейсом в VS 2017 Enterprise.Затем я нашел пример того, как изменить pubxml, чтобы он сжал все выходные файлы.В конце концов я получил следующее:

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <WebPublishMethod>FileSystem</WebPublishMethod>
        <PublishProvider>FileSystem</PublishProvider>
        <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
        <LastUsedPlatform>Any CPU</LastUsedPlatform>
        <SiteUrlToLaunchAfterPublish />
        <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
        <PrecompileBeforePublish>True</PrecompileBeforePublish>
        <EnableUpdateable>True</EnableUpdateable>
        <DebugSymbols>False</DebugSymbols>
        <WDPMergeOption>DonotMerge</WDPMergeOption>
        <ExcludeApp_Data>False</ExcludeApp_Data>
        <publishUrl>bin\Release\Publish</publishUrl>
        <DeleteExistingFiles>True</DeleteExistingFiles>
        <Configuration>Release</Configuration>
    </PropertyGroup>
    <Target Name="ZipPublishOutput" AfterTargets="GatherAllFilesToPublish">
        <Exec Command='powershell -nologo -noprofile -command "compress-archive -force -path $(WPPAllFilesInSingleFolder)\* -destinationpath $(publishUrl).zip"' />
    </Target>
</Project>

Это прекрасно работает, если я делаю публикацию через Visual Studio.Тем не менее, я пытался все, что я могу придумать, чтобы заставить это работать в MSBuild, но не повезло.

Вот пример того, что я думаю, должно работать:

"C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Enterprise \ MSBuild \ 15.0 \ Bin \ MSBuild.exe" WebApp.csproj / nologo / p: конфигурация = выпуск / p: DeployOnBuild = true / p: PublishProfile =ReleasePublish

И для справки, вот версия MSBuild:

Microsoft (R) Build Engine версия 15.9.20 + g88f5fadfbe для .NET Framework

Я знаю, что MSBuild находит профиль pubxml, потому что я могу внести изменения в настройки, например publishUrl, и эти изменения вступят в силу при следующем запуске MSBuild.То, что не работает, - это цель ZipPublishOutput.И даже запуск MSBuild с многословной диагностикой показывает, что GatherAllFilesToPublish никогда не запускается, что означало бы, что моя цель не будет работать.

Я нашел много разных предложений, и, похоже, ничего не помогает.Похоже, что многие решения, которые я нашел, заключались в том, что MSBuild не находил pubxml, но здесь дело не в этом.

Итак, GatherAllFilesToPublish является чем-то специфичным для Visual Studio, и поэтому MSBuild не знает об этом?Это похоже на то, как оно действует.

1 Ответ

0 голосов
/ 28 ноября 2018

Только что получил ту же проблему, используя msbuild с Jenkins.Чтобы выполнить цель GatherAllFilesToPublish с msbuild, мне нужно было добавить цель / t: GatherAllFilesToPublish в командной строке msbuild.

У вас должно быть что-то вроде этого:

/ p: DeployOnBuild = true /p:PublishProfile=fullPathToMyPubXML.pubxml / t: GatherAllFilesToPublish

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...