运行时编译,找不到System.Drawing.Graphics

时间:2013-12-01 20:54:57

标签: vb.net exception reflection compilation system.drawing

我正在尝试使用VBCodeProvider类在运行时编译一段代码。 它有一个例外,效果很好。我无法访问System.Drawing的任何成员 命名空间。 我在代码的开头做了一个“Imports System.Drawing” 编译没有错误(所以我猜参考是没有的)但是当我尝试 例如,定义一个图形对象,其中“Dim g as Graphics”或“Dim g as System.Drawing.Graphics”我在编译时遇到异常:{[...] error BC30002: Der Typ "Graphics" ist nicht definiert. (The type Graphics is not defined)}

当我尝试将System.Drawing.dll添加到CompilerOptions的ReferencedAssemblies时,我得到了一大堆其他编译错误,所以我猜这不是解决方案。 我真的不明白为什么会出现这个问题。例如,在相同的代码中,我使用System.Math的成员。

对于我可能做错的事情,有没有人有我的想法或提示?

提前谢谢你。 延

由于缺乏声誉而编辑:

感谢您的帮助。典型的事情:你尝试搜索超过一个小时,然后你问这里,10分钟后你自己找到解决方案:

问题在于我如何在编译中引用system.drawing.dll。我确实使用了绝对路径“C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.Drawing.dll”,这在一些代码中给了我19个异常,我甚至没有写自己!

enter image description here

使用相对路径是有效的。 e.g。

PM.ReferencedAssemblies.Add( “System.Drawing.dll程序”)

我不知道真正的区别是什么,但至少这是有效的。 : - )

非常感谢你的帮助!

1 个答案:

答案 0 :(得分:0)

典型的事情:你尝试搜索超过一个小时,然后你问这里,10分钟后你自己找到解决方案:

问题在于我如何在编译中引用system.drawing.dll。我确实使用了一个绝对路径C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Drawing.dll,在我自己甚至没有写过的一些代码中给了我19个例外。

See in image here

使用相对路径是有效的。 e.g。

PM.ReferencedAssemblies.Add("System.Drawing.dll")

我不知道真正的区别是什么,但至少这是有效的。