自动编译两个版本的C#程序

时间:2012-05-25 19:46:45

标签: c# compilation

我必须为两个不同的公司制作相同的程序(不同的徽标,不同的名称)。 我想在发布时自动完成这项工作。

我正在考虑使用资源文件或附属程序集,但我不知道如何继续。

您认为哪种方式最好?

感谢。

编辑:

  • 差异只是一个图像和一个字符串。
  • 我想 只需点击一下即可生成所有内容
  • 我们可能会吸引更多客户 未来。
  • 我还必须补充一点,我使用SmartAssembly将所有依赖项合并到一个exe文件中。

3 个答案:

答案 0 :(得分:4)

您可以创建一个包含99%代码的类库,然后有两个项目,每个项目引用公共库,每个公司的1%不同。然后,整个解决方案的构建将为每个公司生成可执行文件。如果每个公司想要的差异足以让您需要[稍微]不同的代码,请使用此方法。

或者,您可以根据数据而不是代码来制作不同的部分。在这种情况下,它可能意味着从文件中获取徽标,而不是将其嵌入可执行文件中,并具有带有公司名称的配置xml文件。这将允许您只为两家公司提供一个可执行文件。

答案 1 :(得分:2)

单独汇编中的资源字符串将是最简单的分发。

但老实说,我认为它是一个自定义功能。 你想要的最后一件事是维护每个人的徽标变化,原因包括:法律原因,文案写作,异想天开的艺术许可证等。

它的缩写....让他们提供格式化的图像,并让他们在安装过程中分配公司名称并将其存储在注册表或某种类型的元文件(XML,清单等)中

答案 2 :(得分:1)

我能把它想象成一个批处理脚本。

让您的项目引用文件(图像(徽标),文本(公司名称)等)。即C:\ MyProject \ Resources。因此,当项目构建时,它将使它们符合应用程序/安装程序等。

这样,您就可以编写一个脚本(.bat文件),该脚本可以复制每个公司所需的资源。

步骤1 - 删除Resources文件夹中的所有文件

第2步 - 使用MSBuild.exe构建项目

步骤3 - 将bin / release文件夹中所需的文件复制到目录(即C:\ Release \ CompanyA)

步骤4 - 更改脚本中的变量以加载下一个公司的详细信息。从第1步开始重复,因此它会复制所需的资源文件并重建。