Создайте пакет clickonce webdeploy - PullRequest
7 голосов
/ 15 февраля 2012

Возможно ли создать пакет веб-развертывания, содержащий приложение clickonce, которое можно развернуть на веб-сервере с помощью стандартного инструмента webdeploy?

Вот идеальный процесс:

  1. MSBuild "YourFullyQualifiedProjectName.csproj / vbproj" / T: пакет
  2. obj \ Debug \ Package \ YourFullyQualifiedProjectName.deploy.cmd / Y

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

В настоящее время я рассмотрел выполнение развертывания на основе файлов во временную папку, скопируйте его в веб-проект,затем упакуйте веб-проект.Есть ли более аккуратное решение?

1 Ответ

9 голосов
/ 17 февраля 2012

Я создал для этого блог на http://sedodream.com/2012/02/18/HowToCreateAWebDeployPackageWhenPublishingAClickOnceProject.aspx, в котором есть больше деталей, но соответствующие части ниже

Если у вас есть клиентский проект, для которого вы хотите создать пакет ClickOnce иззатем вы можете попробовать следующее.

Отредактируйте файл проекта для вашего клиентского проекта и добавьте следующее внизу (прямо над тегом </Project>).

  <PropertyGroup>
    <!--Unless specified otherwise, the tools will go to HKLM\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1 to get the installpath for msdeploy.exe.-->
    <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\3@InstallPath)</MSDeployPath>
    <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\2@InstallPath)</MSDeployPath>
    <MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy\1@InstallPath)</MSDeployPath>
    <MSDeployExe Condition=" '$(MSDeployExe)'=='' ">$(MSDeployPath)msdeploy.exe</MSDeployExe>
  </PropertyGroup>

  <Target Name="CreateWebDeployPackage" AfterTargets="Publish" DependsOnTargets="Publish">
    <!--
    %msdeploy% 
      -verb:sync 
      -source:contentPath="C:\Temp\_NET\WebPackageWithClickOnce\WebPackageWithClickOnce\bin\Debug\app.publish" 
      -dest:package="C:\Temp\_NET\WebPackageWithClickOnce\WebPackageWithClickOnce\bin\Debug\co-pkg.zip"
      -->
    <PropertyGroup>
      <Cmd>"$(MSDeployExe)" -verb:sync -source:contentPath="$(MSBuildProjectDirectory)\$(PublishDir)" -dest:package="$(OutDir)cotest.zip"</Cmd>
    </PropertyGroup>

    <Message Text="Creating web deploy package with command: $(Cmd)" />
    <Exec Command="$(Cmd)" />
  </Target>

В PropertyGroupЯ:

  • объявляя имя пакета веб-развертывания
  • , пытаясь увидеть, где установлен MSDeploy

После этого определяется CreateWebDeployPackage, который будетвыполняется после цели PublishOnly ( из-за AfterTargets = "PublishOnly" ).Эта цель сделает вызов msdeploy.exe для создания пакета в выходном каталоге.Вы должны иметь возможность взять этот пакет и опубликовать его, как и любой другой пакет.

Можете ли вы попробовать и сообщить мне, работает ли он для вас?

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