首页 / 知识
关于msbuild:如何通过CruiseControl.NET发布ClickOnce应用程序?
2023-04-12 07:07:00

How can you publish a ClickOnce application through CruiseControl.NET?我在开发服务器上设置了CruiseControl.NET 1.4版。 每当开发人员签入代码时,它都会进行编译。 现在,我们处于可以开始将应用程序提供给测试人员的地方。 我们想使用ClickOnce分发应用程序,其想法是当测试人员去测试应用程序时,他们拥有最新的版本。 我找不到通过CruiseControl.NET实现这一目标的方法。 我们正在使用MSBUILD来执行构建。 我们已经完成了这一步,可以为您提供一些入门指南。 您应该注意的两件事:
要使用MSBuild生成ClickOnce清单,这是您需要发出的命令:
这将告诉MSBuild构建项目并在bin \ release \ YourProject.publish目录中生成ClickOnce部署文件。 剩下的就是将这些文件复制到FTP / UNC共享/任何位置,一切就绪。 您可以告诉CruiseControl.NET使用那些MSBuild参数进行构建。 然后,您需要一个CruiseControl.NET构建任务来获取生成的部署文件并将其复制到FTP或UNC共享。为此,我们使用了一个自定义的小型C#控制台程序,但是您可以轻松地使用Powershell脚本。 感谢您的所有帮助。我们实施的最终解决方案从每个答案中都花了一点时间。 我们发现使用简单的批处理文件可以更轻松地处理多个环境。我并不是说这是执行此操作的最佳方法,但是对于我们给定的方案和要求,此方法效果很好。用项目名称补充" Project",并用环境名称补充" Environment"(开发,测试,阶段,生产等)。 这是" ccnet.config"文件的任务区域。
您会注意到的第一件事是CopySettings.bat运行。这将复制环境的特定设置,例如数据库连接。 接下来,运行标准的MSBUILD任务。任何编译错误都将在此处捕获并按常规处理。 最后要执行的是Publish.bat。实际上,这实际上是从命令行再次执行MSBUILD"重建",并且CruiseControl中的参数会自动传递并建立。接下来,MSBUILD被称为"发布"目标。发出重新生成时,将与发布完全相同的参数。这样可以使内部版本号保持同步。另外,我们的可执行文件的名称也不同(即-ProjectDev和ProjectTest)。我们最终得到不同的版本号和名称,这使ClickOnce可以完成其工作。 Publish.bat的最后一部分将实际文件复制到其新位置。我们不使用publish.htm,因为我们所有的用户都在网络上,我们只是给他们提供了桌面上清单文件的快捷方式,他们可以单击并始终运行具有绑定在其中的版本号的正确可执行文件。巡航控制。 这是CopySettings.bat
最后是Publish.bat
就像我说的那样,它可能未达到CruiseControl和MSBUILD开发人员想要的正常工作的方式,但是它确实有效。如果您需要昨天进行此工作,则可能是您正在寻找的解决方案。祝好运!
我记得去年为我正在从事的ClickOnce项目这样做。我记得花了我一辈子的时间,但事实确实如此。我想要我的脚本要做的是生成一个指向我们的开发环境的不同安装程序,以及一个针对产品的安装程序。不仅如此,我还需要它注入正确的版本信息,以便现有客户端可以"意识到"那里有一个新版本,这就是clickOnce的全部重点。 这是我的构建脚本的样子:
希望这可以帮助 只要能够在CCNET.config msbuild任务中传递$ {CCNetLabel},将是一个很大的改进。 您要在msbuild中使用ClickOnce清单生成任务。这个过程有点漫长,所以我只想指出几个链接。这是msdn上的参考以及一个示例文章,希望可以帮助您入门。 |
最新内容
相关内容
python如何设置编码格式
python如何设置编码格式,代码,培训,一致,声明,文件,头部,格式,注释,中文,以下,如果要在python2的py文件里面写中文,则必须要添加一行声明文件python如何设置路径
python如何设置路径,培训,工作,路径,模块,以上,更多,内容,改变python的默认路径为当前的工作路径通过os模块来进行python中路径的更改默认python静态web服务器如何实现
python静态web服务器如何实现,数据,培训,服务,代码,时间,服务器,静态,报文,浏览器,消息,python静态web服务器如何实现的方法:1、编写TCP服务器python函数形参如何设置默认值
python函数形参如何设置默认值,培训,函数,实例,以上,参数,更多,内容,在编写函数时,可以为每个形参指定默认值。1、Python在调用函数中为形python__setattr__的属性设置
python__setattr__的属性设置,数据,管理,培训,属性,方法,实例,字典,函数,是非,下面,python中__setattr__的属性设置1、说明定义类对象管理属多种形式的Delphi应用程序和对话框
多种形式的Delphi应用程序和对话框,多种形式的Delphi应用程序和对话框,视图,所见即所得,应用程序,文档,Multiple form Delphi applic关于c#:如何使用MVP将服务层消息/错
关于c#:如何使用MVP将服务层消息/错误传递给更高层?,关于c#:如何使用MVP将服务层消息/错误传递给更高层?,应用程序,架构,编写,实施,How Do如何从部署在64位服务器上的SSIS包
如何从部署在64位服务器上的SSIS包访问Excel数据源?,如何从部署在64位服务器上的SSIS包访问Excel数据源?,文件,数据,传输,第三方,How d关于.net:C#应用程序被检测为病毒
关于.net:C#应用程序被检测为病毒,关于.net:C#应用程序被检测为病毒,安装,项目,程序,几分钟,C# application detected as a virus关于关于ajax:是否有某种方法可以将数据
关于ajax:是否有某种方法可以将数据从Web服务器推送到浏览器?,关于ajax:是否有某种方法可以将数据从Web服务器推送到浏览器?,查找,服务关于c#:创建单实例WPF应用程序的正确
关于c#:创建单实例WPF应用程序的正确方法是什么?,关于c#:创建单实例WPF应用程序的正确方法是什么?,控制台,窗体,只读,比我,What is the cor我可以在Intranet中访问ASP.NET开
我可以在Intranet中访问ASP.NET开发服务器吗?,我可以在Intranet中访问ASP.NET开发服务器吗?,启动,执行,服务器,网站,Can I access ASP.