Автоматически публиковать ClickOnce по окончании сборки в Visual Studio - PullRequest
2 голосов
/ 17 июня 2011

У меня есть приложение ClickOnce WPF, которое тесно связано с приложением ASP.NET.Приложение ASP.NET запускает приложение ClickOnce в определенные моменты, и приложение ClickOnce развертывается в подпапке приложения ASP.NET.

У меня все это работает, и я понимаю, что могу использовать/ target: публиковать переключатель при выполнении автоматической сборки для обновления файлов ClickOnce.Однако это не помогает мне с опытом разработчика.

Прямо сейчас, когда разработчик вносит изменения в приложение WPF и нажимает кнопку Запустить в веб-приложении, вы не видите свои изменения в WPF.приложение, потому что вам нужно вручную снова опубликовать его локально.

Есть ли способ вызвать поведение публикации, чтобы приложение ClickOnce было переиздано, когда оно встроено в Visual Studio?

ПРИМЕЧАНИЕ. Я пытался поместить «msbuild / target: publish» на шаг после сборки приложения WPF, но это вызвало бесконечный цикл, я думаю, потому что цель публикации на самом деле выполняет перестройку, которая вызывает шаг после сборки.

1 Ответ

5 голосов
/ 19 июня 2011

В файле Microsoft.Common.targets (v4.0.30319 x64) цель публикации определяется следующим образом:

<PropertyGroup>
    <PublishDependsOn Condition="'$(PublishableProject)'=='true'">
        SetGenerateManifests;
        Build;
        PublishOnly
    </PublishDependsOn>
    <PublishDependsOn Condition="'$(PublishableProject)'!='true'">
        _DeploymentUnpublishable
    </PublishDependsOn>
</PropertyGroup>
<Target
    Name="Publish"
    DependsOnTargets="$(PublishDependsOn)"/>

Поскольку публикация уже зависит от Build , достаточно вызвать Публикация target в AfterBuild (или добавление его в список зависимостей этой цели) не будет работать.

Однако, поскольку Publish просто определяетпорядок операций, указав его зависимости, позволяет Visual Studio публиковать ваше решение после каждой сборки, добавляя зависимости цели публикации в Build .Просто добавьте следующее в самый конец файла .csproj (или .vbproj) вашего приложения WPF.Обратите внимание, что зависимости должны быть изменены после , включая Microsoft.CSharp.targets (который, в свою очередь, включает Microsoft.Common.targets).

<PropertyGroup>
  <BuildDependsOn>
    SetGenerateManifests;
    $(BuildDependsOn);
    PublishOnly
  </BuildDependsOn>
</PropertyGroup>

Если вы хотите переопределить этот параметр только внекоторые сборки, просто добавьте соответствующие Condition к этому PropertyGroup.

...