什么是白标签DLL的良好方法?

4
有关于使用Visual Studio对DLL和EXE进行白标的好方法是什么?
本质上,我们希望能够根据我们为之打包解决方案的客户端来更改dll和exe的名称,例如:
不是myCompany.exe和myCompany.db.dll,而是yourComany.exe和yourComany.db.dll或acme.exe和acme.db.dll等。
编辑:
目前,我们正在使用纯粹的Visual Studio构建过程以及一个wix项目创建一个msi。

4
您能解释一下“白标签化”一个dll或可执行文件的意思吗?(注:白标签化是指将产品或服务从制造商品牌中剥离出来,重新打上其他企业或个人的品牌标识,以增强市场竞争力。在软件开发中,白标签化通常用于允许其他公司或个人定制和销售该软件,同时保留原始开发者的技术支持和知识产权。) - Michael Petrotta
我认为像这样的要求会给你带来麻烦。为何有此必要? - Bernard
1
我不是在寻找麻烦,我只想要解决方案。麻烦总是喜欢缠着我。;-) - Phil Carson
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"

你提到了通用命名的好处,但至少exe文件必须被命名(而且有多个)。你能否提供一个如何在构建任务中实现这一点的示例? - Phil Carson
目前我们正在使用直接的Visual Studio构建过程和一个Wix项目来创建MSI。 - Phil Carson
看看我的更新答案。你可能可以创建一个自定义应用程序,在发布构建期间执行。该应用程序可能需要执行后续步骤(如更改Wix配置),以为每个应用程序创建唯一的MSI。 - Tim M.

1

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

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

0

我不知道有没有一种好方法可以在不实际构建作为 XYZ 公司的项目的情况下完成这个。你可以尝试使用this 这样的东西,它会给你想要的结果,但它也会改变程序集的物理名称,这可能会导致依赖问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接