我正在尝试使用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个异常,我甚至没有写自己!
使用相对路径是有效的。 e.g。
PM.ReferencedAssemblies.Add( “System.Drawing.dll程序”)
我不知道真正的区别是什么,但至少这是有效的。 : - )
非常感谢你的帮助!
答案 0 :(得分:0)
典型的事情:你尝试搜索超过一个小时,然后你问这里,10分钟后你自己找到解决方案:
问题在于我如何在编译中引用system.drawing.dll。我确实使用了一个绝对路径C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\System.Drawing.dll
,在我自己甚至没有写过的一些代码中给了我19个例外。
使用相对路径是有效的。 e.g。
PM.ReferencedAssemblies.Add("System.Drawing.dll")
我不知道真正的区别是什么,但至少这是有效的。