- 积分
- 10755
- 明经币
- 个
- 注册时间
- 2005-6-8
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
我有一段代码存储在一个文件中 如 c:\ab.vb 内容如下:
Imports Microsoft.VisualBasic
Imports System
Imports Autodesk.AutoCAD.DatabaseServices
Imports System.Runtime.CompilerServices
Public Module EntityExtend
<Extension()> _
Public Function OT(ByVal Ent As Entity) As String
Return "1"
End Function
End Module
Public Class SelectionCompiler
Public Function EntityIsTrue(ByVal Ent As Entity) As Boolean
Return Ent.Layer = "1" And Ent.OT = "12"
End Function
End Class
现在想在程序中用动态编译的方法对上述代码进行编译,代码如下:
Dim ComPara As New CompilerParameters() With {.GenerateExecutable = False, .GenerateInMemory = True}
ComPara.ReferencedAssemblies.Add("C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5\System.Core.dll")
ComPara.ReferencedAssemblies.Add("C:\Program Files\Autodesk\AutoCAD Map 3D 2011\acdbmgd.dll")
Dim Pro As New VBCodeProvider()
Dim codestr As String = System.IO.File.ReadAllText("c:\ab.vb")
Dim Compiled As CompilerResults = Pro.CompileAssemblyFromSource(ComPara, codestr)
执行到此处,Compiled 中会提示源代码有错,错误内容如下:
“OT”不是“Autodesk.AutoCAD.DatabaseServices.Entity”的成员。
请问为什么会出错这样的错误?(将 c:\ab.vb代码拷到VS中直接编译是不会出错的,为什么使用动态编译就会出现?)
|
|