我将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'
我已经注意到了here和here给出的答案,并在Embed Interop Types
和AxInterop.OlectraChart2D
的属性面板中尝试了Interop.OlectraChart2D
值的所有可能组合但没有一个在没有编译错误的情况下清除警告。
将项目纳入不同的解决方案会带来不同的警告: -
COM参考'OlectraChart2D'是ActiveX的互操作程序集 控制'AxOlectraChart2D'但被标记为由编译器链接 使用/ link标志。此COM引用将被视为参考 并且不会被链接。
但输出bin
目录没问题。
我可以通过将dll从其他解决方案复制到bin
目录来清除运行时异常,但这对我来说似乎不对。有谁知道我应该做些什么来妥善解决这个问题?
答案 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。