【发布时间】:2017-02-20 18:40:27
【问题描述】:
我有一个使用外部 COM 组件的系统。有两个基本相同的 COM 对象不同版本(供应商更改了 COM GUID 而没有更改接口。)我使用 tlbimp.exe 为每个 COM 对象创建了两个基本相同的互操作 DLL。我想为每个 COM 对象构建两个具有相同组合名称的 .NET dll。所以我有两个不同的项目,它们引用了所有相同的 C# 源代码(添加为链接)。唯一的区别是对互操作 DLL 的引用不同。计划是最终使用基本相同的不同 DLL(每个 COM 对象一个),然后重命名安装时需要的那个。
我开始为构建的第二个 DLL 使用不同的 bin 目录。但是,构建过程设置为单个 bin 目录(TFS 输出位置=单个文件夹),这会导致第二个 DLL 覆盖第一个。所以我添加了一个后期构建脚本来重命名每个构建的 DLL。
下一个问题是重命名会阻止下游代码编译。 (缺少汇编错误)我可以尝试选择第一个 DLL 构建并使用原始名称保留它,但我可以看到在本地构建时会以混乱结束的场景。哪个 COM 对象正在使用中。基本上,构建错误可能会使系统处于奇怪的状态。
我最初想看看是否可以构建一个文件名与内部程序集名称不同的 DLL,但这似乎是不可能的。
关于解决方案的两个想法:(也许还有另一个?)
1) 我可以用不同于 AssemblyName 的文件名构建 .NET DLL 吗? 或
2) 用一个(或两个)dll 重命名/复制构建并保留其中一个用于依赖代码构建的干净方法是什么?
【问题讨论】:
标签: c# msbuild com-interop