c# - 如何发布使用 C# 创建的 COM-Visible 库
问题描述
我必须从 C# 项目创建一个 COM 库,但我非常坚持引用外部库。
我在项目的属性中设置了“Make assembly COM-Visible”,当我构建它时,它会创建 dll 并将所有需要的 dll 放在 bin/Release 目录中。
使用的库
所有库都是使用 NuGet 或系统库导入的 .NET。
创建 .tlb 文件
当我运行一个命令来创建一个 .tlb 文件时,它被创建了,但它也显示了一个警告:
tlbexp.exe "MyLib.dll"
TlbExp : warning TX00131175 : When cross-compiling, all type library references should be included on the command line to ensure the correct bit-specific type libraries are loaded.
Assembly exported to 'C:\Workspace\MyProject\bin\MyLib.tlb'
看起来这个库已经准备好发货了,但我想知道我是否可以忽略警告。
而且,发布这个 COM-Visible 库的最佳方式是什么?我可以只发送整个bin/Release目录,还是应该使用其他方法?
解决方案
好吧 .tlb 只是为了从开发工具(例如 Visual C++ )引用您的库,正确引用并不意味着程序在正确编译后可以工作。这是因为您需要在目标机器上正确安装 dll,通常您需要xcopy
包含所有依赖项的 dll,然后使用regasm.exe
(指定/CODEBASE
我建议的标志,这样您就可以在文件系统上确定您想要的 dll)。当然,即使是适当的框架也必须安装。
推荐阅读
- r - 在ggplot中,如何绘制一个圆/圆盘,该圆/圆盘根据给定的比例和内部的彩色点划分其面积?
- apollo - 如何在没有缓存数据的情况下替换查询数据可能会丢失警告
- python - Python 包未安装在 Mac 上
- sql-server - 插入 SQL Server 的更快方法
- lua - 为什么这会删除所有“%”lua
- ada - 防止在 GNAT 中使用 Ada 202x
- regex - 在输出中也包含搜索到的正则表达式文本
- apache-kafka - 在 Apache Flink 中流式处理车间订单?
- reactjs - 如何对表单验证错误进行 Jest 测试?
- reactjs - 状态值不断恢复