Создание пакета clickonce webdeploy
можно ли создать пакет веб-развертывания, содержащий приложение clickonce, которое можно развернуть на веб-сервере с помощью стандартного инструмента webdeploy?
вот был бы идеальный процесс:
- MSBuild " YourFullyQualifiedProjectName.csproj /vbproj" / T:пакет
- objDebugPackageYourFullyQualifiedProjectName.развертывать.cmd / Y
обоснование этого было бы так, что мы можем построить все решение, включая web пакеты, запустите все тесты, а затем разверните только после прохождения тестов.
в настоящее время я рассматривал выполнение развертывания на основе файлов во временную папку, скопируйте ее в веб-проект, а затем упакуйте веб-проект. Есть ли более аккуратное решение?
1 ответов
Я создал блог для этого на 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 to get the installpath for msdeploy.exe.-->
<MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy@InstallPath)</MSDeployPath>
<MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy@InstallPath)</MSDeployPath>
<MSDeployPath Condition="'$(MSDeployPath)'==''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\IIS Extensions\MSDeploy@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 я:
- объявление имени пакета Web deploy
- попытка увидеть, где установлен MSDeploy
после этого определяется CreateWebDeployPackage, который будет выполняться после цели PublishOnly (из-за AfterTargets= "PublishOnly"). Эта цель будет звонить в msdeploy.exe для создания пакета в выходном каталоге. Вы должны быть в состоянии возьмите этот пакет и опубликуйте его, как и любой другой пакет.
вы можете попробовать его и дайте мне знать, если это работает для вас?