对于使用visual studio进行白色标记dll和exe的好方法是什么?
本质上,我们希望能够根据我们打包解决方案的客户端来更改dll和exe的名称,例如:
而不是myCompany.exe和myCompany.db.dll,我想要yourComany.exe和yourComany.db.dll或acme.exe和acme.db.dll等
修改
目前,我们正在使用带有wix项目的直观视觉工作室构建过程来创建msi。
答案 0 :(得分:3)
如果重建它的唯一理由是更改名称,你可以首先使用通用的东西吗?想象一下,必须修补50个相同的DLL,并分别构建/部署每个DLL,因为它们都必须命名为不同的东西。即使它只针对少数客户,我也不愿意维持这一点。版本控制也很麻烦。
如果你必须这样做,我可能会选择build task(可以执行相当高级的操作)。你提到你是“打包解决方案”;构建任务的可行性取决于它的打包方式。
回应您关于使用特定于客户端的名称命名EXE的评论......我明显的建议是让这些应用程序包含尽可能少的代码。
我能想到的最简单的构建集成是创建一个构建后的任务,该任务在发布模式下成功编译时运行。然后,任务可以读取定义唯一名称的配置文件,并将成功构建的EXE复制到输出目录。
某些操作只能从任务配置文件中完成:http://msdn.microsoft.com/en-us/library/ms171466。
或者,您可能希望创建一个小应用程序来为您完成所有工作,并将配置开关传递给它。
例如,这是一个小的post-build命令,我在成功构建Web应用程序时执行该命令以缩小我的JavaScript / CSS。概念类似:
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的内容,它会为您提供所需的结果,但它也会更改程序集的物理名称,这可能会导致依赖性问题。