2

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

vbc:警告 BC40059:创建了对嵌入式互操作程序集“Interop.OlectraChart2D”的引用,因为从程序集“AxInterop.OlectraChart2D”对该程序集的间接引用。考虑更改任一程序集上的“嵌入互操作类型”属性。

vbc:警告 BC40059:由于从程序集“MyClassLibrary”间接引用了该程序集,因此创建了对嵌入式互操作程序集“Interop.OlectraChart2D”的引用。考虑更改任一程序集上的“嵌入互操作类型”属性。

这些似乎是为了防止必要的 dll 被包含在bin目录中,从而导致运行时出现异常。

编辑:因此例外:-

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

我已经注意到这里这里给出的答案,并Embed Interop Types在属性面板中尝试了所有可能的值组合AxInterop.OlectraChart2DInterop.OlectraChart2D它们都没有在不产生编译错误的情况下清除警告。

将项目包含在不同的解决方案中会带来不同的警告:-

COM 参考“OlectraChart2D”是 ActiveX 控件“AxOlectraChart2D”的互操作程序集,但被编译器用 /link 标志标记为链接。此 COM 引用将被视为引用,不会被链接。

但输出bin目录很好。

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

4

1 回答 1

1

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

答案:

我通过确保所有程序集都将“嵌入互操作类型”设置为 FALSE 来解决此问题。

似乎通常当您使用 COM 库时,该参数默认设置为 true。

于 2016-10-05T16:39:40.540 回答