【发布时间】:2013-12-24 14:08:25
【问题描述】:
我正在尝试使用 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 个异常.!
有效的是使用相对路径。例如
PM.ReferencedAssemblies.Add("System.Drawing.dll")
我不知道真正的区别是什么,但至少这是可行的。 :-)
非常感谢您的帮助!
【问题讨论】:
-
你能展示一些你尝试使用
Graphics的代码吗(编辑帖子)? -
显示添加 System.Drawing 程序集后出现的其他错误。
-
其他程序集也有一个 System.Drawing 命名空间,所以这没有任何意义。当然你需要添加引用,“一大堆错误”对于诊断根本问题当然是必不可少的。
-
请参阅上面的编辑。谢谢。
-
如果您找到了解决方案,请将其添加为答案并将该答案标记为已接受。否则,未来的读者会一直认为这个问题是开放的,即未解决的。
标签: vb.net exception reflection compilation system.drawing