再次参考嵌入式互操作程序集

时间:2013-06-24 10:14:24

标签: vb.net com-interop

我将Olectra Chart(第三方图形软件包)包含在VB.Net项目中,但受到以下警告的困扰: -

  

vbc:warning BC40059:为嵌入式互操作创建了一个引用   汇编'Interop.OlectraChart2D'因为间接引用   来自程序集'AxInterop.OlectraChart2D'的程序集。考虑   更改任一程序集上的“嵌入互操作类型”属性。

     

vbc:warning BC40059:为嵌入式互操作创建了一个引用   汇编'Interop.OlectraChart2D'因为间接引用   程序集“MyClassLibrary”中的程序集。考虑改变'嵌入   任何一个程序集上的Interop Types属性。

这些似乎可以防止必要的dll包含在bin目录中,从而在运行时导致异常。

编辑:因此异常: -

  

System.IO.FileNotFoundException:无法加载文件或程序集   'Interop.OlectraChart2D,Version = 6.0.0.0,Culture = neutral,   PublicKeyToken = null'或其依赖项之一。系统不能   找到指定的文件。文件名:'Interop.OlectraChart2D,   Version = 6.0.0.0,Culture = neutral,PublicKeyToken = null'

我已经注意到了herehere给出的答案,并在Embed Interop TypesAxInterop.OlectraChart2D的属性面板中尝试了Interop.OlectraChart2D值的所有可能组合但没有一个在没有编译错误的情况下清除警告。

将项目纳入不同的解决方案会带来不同的警告: -

  

COM参考'OlectraChart2D'是ActiveX的互操作程序集   控制'AxOlectraChart2D'但被标记为由编译器链接   使用/ link标志。此COM引用将被视为参考   并且不会被链接。

但输出bin目录没问题。

我可以通过将dll从其他解决方案复制到bin目录来清除运行时异常,但这对我来说似乎不对。有谁知道我应该做些什么来妥善解决这个问题?

1 个答案:

答案 0 :(得分:1)

我在这个问题上的回答也可以解决您的问题:Cannot be used across assembly boundaries because it has a generic type parameters that is an embedded interop type

答案:

  

我通过确保所有程序集都有“Embed Interop”来修复此问题   类型“为假。

     

通常在使用COM库时通常会设置参数   默认情况下为true。