4

用 Visual Studio 给 dll 和 exe 贴上白标签的好方法是什么?

本质上,我们希望能够根据我们为其打包解决方案的客户端更改 dll 和 exe 的名称,例如:

而不是 myCompany.exe 和 myCompany.db.dll,我想要 yourComany.exe 和 yourComany.db.dll 或 acme.exe 和 acme.db.dll 等

编辑:

目前,我们正在使用带有 wix 项目的直接 Visual Studio 构建过程来创建 msi。

4

3 回答 3

3

如果重建它的唯一理由是更改名称,那么您可以首先使用通用的东西吗?想象一下,必须修补 50 个相同的 DLL,并分别构建/部署每个 DLL,因为它们都必须命名为不同的东西。即使它只适用于少数客户,我也不愿意保持这种状态。版本控制也可能很麻烦。

如果您必须这样做,我可能会执行构建任务(可以执行相当高级的操作)。您提到您是“打包解决方案”;构建任务的可行性取决于它的打包方式。

为了回应您关于使用特定于客户端的名称命名 EXE 的评论......我的明显建议是让这些应用程序包含尽可能少的代码。

我能想到的最简单的构建集成是创建一个构建后任务,该任务在发布模式下成功编译后运行。然后,该任务可以读取定义唯一名称的配置文件,并将成功构建的 EXE 复制到输出目录。

一些操作可以通过任务配置文件完成:http: //msdn.microsoft.com/en-us/library/ms171466


或者,您可能想创建一个小应用程序来为您完成所有工作,只需将配置开关传递给它。

例如,这里有一个构建后的小命令,我在成功构建 Web 应用程序时执行该命令来缩小我的 JavaScript/CSS。概念类似:

  • 建造
  • 执行应用程序(如 msbuild.exe,或您的自定义构建应用程序)
  • 将数据传递给可执行文件(如路径、开关等)
  • 可执行文件将文件写出

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\msbuild.exe

"$(ProjectDir)Properties\build\minify.xml" 

/p:SourceLocation="$(ProjectDir)client" 

/p:CssOutputFile="$(ProjectDir)client\final\final-full.css" 

/p:JavaScriptOutputDirectory="$(ProjectDir)client\final"
于 2012-08-10T02:01:56.537 回答
1

您可以在所有输出程序集(dll 和 exe)上的任何后期构建过程中使用ILMerge,以创建一次性的客户品牌构建。

ilmerge /out:CustomerName.exe internalName.dll internalName.exe 
于 2012-08-10T02:47:19.560 回答
0

我不知道是否有一种好方法可以在不将项目实际构建为 XYZ 公司的情况下做到这一点。您可以尝试这样的事情,会给您带来所需的结果,但它也会更改程序集的物理名称,这可能会导致依赖性问题。

于 2012-08-10T01:59:16.397 回答