【发布时间】:2013-06-24 10:14:24
【问题描述】:
我正在将第三方图形包 Olectra Chart 包含到 VB.Net 项目中,但受到以下警告的困扰:-
vbc:警告 BC40059:创建了对嵌入式互操作的引用 程序集 'Interop.OlectraChart2D' 因为间接引用 来自程序集“AxInterop.OlectraChart2D”的程序集。考虑 更改任一程序集上的“嵌入互操作类型”属性。
vbc:警告 BC40059:创建了对嵌入式互操作的引用 程序集 'Interop.OlectraChart2D' 因为间接引用 来自程序集“MyClassLibrary”的程序集。考虑更改“嵌入 任一程序集上的互操作类型的属性。
这些似乎是为了防止必要的 dll 包含在 bin 目录中,从而导致运行时出现异常。
编辑:因此例外:-
System.IO.FileNotFoundException:无法加载文件或程序集 'Interop.OlectraChart2D,版本=6.0.0.0,文化=中性, PublicKeyToken=null' 或其依赖项之一。系统无法 找到指定的文件。文件名:'Interop.OlectraChart2D, 版本=6.0.0.0,文化=中性,PublicKeyToken=null'
我已经注意到here 和here 给出的答案,并在AxInterop.OlectraChart2D 和Interop.OlectraChart2D 的属性面板中尝试了Embed Interop Types 值的所有可能组合,但它们都没有在不创建编译的情况下清除警告错误。
将项目包含在不同的解决方案中会带来不同的警告:-
COM 参考“OlectraChart2D”是 ActiveX 的互操作程序集 控制“AxOlectraChart2D”,但被编译器标记为链接 带有 /link 标志。此 COM 引用将被视为引用 并且不会被链接。
但输出bin 目录没问题。
我可以通过将 dll 从其他解决方案复制到 bin 目录来清除运行时异常,但这对我来说似乎不正确。有谁知道我应该怎么做才能正确解决这个问题?
【问题讨论】:
-
警告是良性的,当然不是例外。你完全忘了记录它的样子。显然,您应该使用供应商的支持渠道来寻求有关此特定 ActiveX 控件的帮助。将 .NET 图表控件视为没有麻烦的替代品。
-
@HansPassant,感谢您的提示。我正在仔细考虑 .NET 图表,因为看起来 Olectra 供应商已经去了天空中的伟大软件公司。
标签: vb.net com-interop