【问题标题】:Whats a good approach for white labeling dll什么是白标dll的好方法
【发布时间】:2012-08-10 01:49:12
【问题描述】:

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

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

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

编辑:

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

【问题讨论】:

  • 您能解释一下“白标”dll 或可执行文件是什么意思吗?
  • 我认为您是在为这样的要求自找麻烦。为什么这是必要的?
  • 我不是自找麻烦,我在寻求解决方案,麻烦找我没问题。 ;-)

标签: c# wpf visual-studio-2010


【解决方案1】:

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

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

针对您关于使用特定于客户端的名称命名 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(其中有几个)。您是否有一个如何将其作为构建任务执行的示例?
  • 目前我们正在使用带有 wix 项目的直接 Visual Studio 构建过程来创建 msi。
  • 查看我的更新答案。您可能可以创建一个自定义应用程序以在发布构建期间执行。该应用可能需要执行后续步骤(例如更改 Wix 配置)以为每个步骤创建一个唯一的 MSI。
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      • 1970-01-01
      • 2013-07-29
      • 1970-01-01
      相关资源
      最近更新 更多