什么是白色标记dll的好方法

时间:2012-08-10 01:49:13

标签: c# wpf visual-studio-2010

对于使用visual studio进行白色标记dll和exe的好方法是什么?

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

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

修改

目前,我们正在使用带有wix项目的直观视觉工作室构建过程来创建msi。

3 个答案:

答案 0 :(得分:3)

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

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

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

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

某些操作只能从任务配置文件中完成:http://msdn.microsoft.com/en-us/library/ms171466


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

例如,这是一个小的post-build命令,我在成功构建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"

答案 1 :(得分:1)

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

ilmerge /out:CustomerName.exe internalName.dll internalName.exe 

答案 2 :(得分:0)

我不知道有一个好方法可以做到这一点,而不是实际建立XYZ公司的项目。您可以尝试类似this的内容,它会为您提供所需的结果,但它也会更改程序集的物理名称,这可能会导致依赖性问题。