当前位置:  开发笔记 > 编程语言 > 正文

如何通过CruiseControl.NET发布ClickOnce应用程序?

如何解决《如何通过CruiseControl.NET发布ClickOnce应用程序?》经验,为你挑选了2个好方法。

我在我的开发服务器上设置了CruiseControl.NET 1.4版.每当开发人员检查代码时,它都会进行编译.

现在,我们可以开始向测试人员提供应用程序.我们想使用ClickOnce来分发应用程序,其想法是当测试人员测试应用程序时,他们拥有最新版本.

我找不到使用CruiseControl.NET实现这一目标的方法.我们正在使用MSBUILD来执行构建.



1> Judah Gabrie..:

我们已经做到了这一点,可以给你一些启动的指示.

你应该注意的两件事:

MSBuild可以为您生成必要的部署文件.

MSBuild不会将文件部署到FTP或UNC共享.你需要一个单独的步骤.

要使用MSBuild生成ClickOnce清单,以下是您需要发出的命令:

msbuild /target:publish /p:Configuration=Release /p:Platform=AnyCPU; "c:\yourProject.csproj"

这将告诉MSBuild构建您的项目并在bin\Release\YourProject.publish目录中生成ClickOnce部署文件.

剩下的就是将这些文件复制到FTP/UNC共享/任何地方,你们都已经完成了设置.

您可以使用这些MSBuild参数告诉CruiseControl.NET.

然后,您需要一个CruiseControl.NET构建任务来获取生成的部署文件并将它们复制到FTP或UNC共享.我们使用自定义的小型C#控制台程序,但您可以轻松使用Powershell脚本.



2> proudgeekdad..:

谢谢你的帮助.我们实施的最终解决方案从每个答案中略微提出.

我们发现使用简单的批处理文件处理多个环境更容易.我并不是说这是最好的方法,但是对于我们给定的方案和要求,这很有效.使用您的项目名称补充"项目",并使用您的环境名称(开发,测试,阶段,生产等)补充"环境".

这是我们的"ccnet.config"文件的任务区域.



    F:\Source\Project\Environment\CruiseControl\CopySettings.bat




    C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe
    F:\Source\Project\Environment\
    Project.sln
    /noconsolelogger /p:Configuration=Debug /v:diag
    Rebuild
    0
    ThoughtWorks.CruiseControl.MsBuild.XmlLogger,ThoughtWorks.CruiseControl.MsBuild.dll




    F:\Source\Project\Environment\CruiseControl\Publish.bat

您将注意到的第一件事是CopySettings.bat运行.这会复制环境的特定设置,例如数据库连接.

接下来,运行标准MSBUILD任务.任何编译错误都会在此处捕获并正常处理.

最后要执行的是Publish.bat.这实际上是从命令行再次执行MSBUILD"重建",并且CruiseControl中的参数会自动传入并构建.接下来,调用MSBUILD作为"发布"目标.在发布重建时,将为发布提供完全相同的参数.这使构建号保持同步.此外,我们的可执行文件命名不同(即 - ProjectDev和ProjectTest).我们最终得到了不同的版本号和名称,这使得ClickOnce能够做到这一点.

Publish.bat的最后一部分将实际文件复制到新的主页.我们不使用publish.htm,因为我们的所有用户都在网络上,我们只是给他们一个桌面上清单文件的快捷方式,他们可以点击并始终运行正确的可执行文件,其中包含一个版本号巡航控制.

这是CopySettings.bat

XCOPY "F:\Source\Project\Environment\CruiseControl\Project\app.config" "F:\Source\Project\Environment\Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.Designer.vb" "F:\Source\Project\Environment\Project\My Project" /Y /I /R
XCOPY "F:\Source\Project\Environment\CruiseControl\Project\My Project\Settings.settings" "F:\Source\Project\Environment\Project\My Project" /Y /I /R

最后,这是Publish.bat

C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:rebuild "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationRevision=%CCNetLabel% /property:AssemblyName="ProjectEnvironment" /property:PublishUrl="\\Server\bin\Project\Environment\\"
C:\WINDOWS\Microsoft.NET\Framework\v3.5\MSBuild.exe /target:publish "F:\Source\Project\Environment\Project\Project.vbproj" /property:ApplicationVersion="1.0.0.%CCNetLabel%" /property:AssemblyVersion="1.0.0.%CCNetLabel%" /property:AssemblyName="ProjectEnvironment" 

XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish" "F:\Binary\Project\Environment" /Y /I
XCOPY "F:\Source\Project\Environment\Project\bin\Debug\app.publish\Application Files" "F:\Binary\Project\Environment\Application Files" /Y /I /S

就像我说的那样,它可能没有像CruiseControl和MSBUILD开发人员那样的工作方式完成,但确实有效.如果您需要在昨天使用它,它可能是您正在寻找的解决方案.祝好运!

推荐阅读
贴进你的心聆听你的世界
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有