【问题标题】:What is the best way to publish multiple versions of the same ClickOnce application?发布同一 ClickOnce 应用程序的多个版本的最佳方式是什么?
【发布时间】:2013-07-19 15:35:02
【问题描述】:

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

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

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

这里有几个我能想到的解决这个问题的方法/问题...

1.有没有办法创建一个单独的发布设置文件以在构建时使用?

2.我可以在构建时使用 MSBuild.exe 编辑特定的发布设置(如开始菜单位置等)吗?我认为这将是理想的... 例如

MSBuild.exe project.sln /target:Publish /property:edit-project-publish-settings-here

3.也许创建第二个 .csproj 文件? (不想这样做……)

请分享您对最佳方法或任何其他巧妙方法的想法。谢谢!

【问题讨论】:

    标签: c# .net msbuild clickonce


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

        我发现您可以像这样使用 MSBuild.exe 编辑某些属性

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

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

        这里的MSBuild documentation 也很有用——尤其是在Publishing Properties

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-05-18
          • 1970-01-01
          • 2018-08-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-09-09
          相关资源
          最近更新 更多