1

我有 ac# ClickOnce 应用程序,我需要能够多次发布以用于 OEM 目的。

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

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

以下是我能想到的解决此问题的几种方法/问题...

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

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

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

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

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

4

3 回答 3

2

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

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

于 2013-07-19T16:06:51.930 回答
1

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

MSBuild Solution.sln /target:publish /property: ProductName =ProductA\; 发布者=A公司\; ApplicationIcon =公司A.ico

我发现了另一篇关于使用 .NET 代码以编程方式修改 .csproj 文件的有用帖子。(仅当您修改的内容比下面 ClickOnce 文档中指定的项目属性更深时才需要)

这里的MSBuild 文档也很有用——尤其是在Publishing Properties下

于 2013-07-22T16:26:24.980 回答
1

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

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

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

于 2013-08-22T21:28:56.300 回答