发布同一ClickOnce应用程序的多个版本的最佳方法是什么?

时间:2013-07-19 15:35:03

标签: c# .net msbuild clickonce

我有一个c#ClickOnce应用程序,我需要能够多次发布以供OEM使用。

我现在理解的方式是发布设置位于.csproj文件中。 但是,在我想发布多个版本的情况下,这是不方便的。

例如,公司A需要完全不同的图标,开始菜单位置,公司B的产品名称等,但不需要重命名组件。

以下是我可以考虑解决此问题的一些方法/问题......

  

1.有没有办法在构建期间创建单独的发布设置文件?

     

2.我可以在构建时使用MSBuild.exe编辑特定的发布设置(如“开始菜单位置”等)吗?我觉得这很理想......   e.g。

     
    

MSBuild.exe project.sln / target:发布/属性: edit-project-publish-settings-here

  
     

3.也许可以创建第二个.csproj文件? (宁愿不这样做......)

请分享您对最佳方法的想法,或任何其他巧妙的方法来实现这一目标。谢谢!

3 个答案:

答案 0 :(得分:2)

我希望我能给你一些出色的解决方案,但我个人可能会选择3。

我的意思是,它非常简单,变化应该是非常静态的,并且很难完全搞砸它并将错误的更改部署到错误的公司。

答案 1 :(得分:1)

我发现您可以使用MSBuild.exe编辑某些属性,如此

  

MSBuild Solution.sln / target:publish /property:ProductName=ProductA\;Publisher=CompanyA\;ApplicationIcon=companyA.ico

我在modifying.csproj files programatically上发现了另一个有用.NET代码的有用帖子。 (只有当您修改的内容比下面的ClickOnce文档中指定的项目属性更深时才需要这样做)

这里的MSBuild documentation也很有用 - 特别是在发布属性

答案 2 :(得分:1)

如果在项目文件夹中复制.csproj,它将引用所有相同的源文件,您只需更改可执行文件名即可。创建另一个VS解决方案,您可以引用复制的.csproj并删除您的第一个,以便您可以发布两个单独的版本。

然而,这对于ClickOnce来说并不理想。

如果使用指定“模式”(公司A,B,C等)的Singleton对象,则可以轻松地将其存储在app.config(或其他xml文件)中。然后只需重新发布您的ClickOnce应用程序,但复制配置文件的正确版本,以便它随构建一起提供。 这样,您不需要任何其他csprojects 只需包含所有图标,并根据您的Singleton对象在App Start上的运行时设置它们。