简短:哪些程序集(框架 DLL)默认包含在 .NET CodeDom 编译器(CSharpCodeProvider
或VBCodeProvider
)中,而没有明确添加对 CompilerParameters 的引用?
我正在使用CodeDom
工具,即CSharpCodeProvider
和VBCodeProvider
,在运行时编译程序集。我注意到,默认情况下包含一些但不是所有的 .NET 引用程序集。
例如,我可以在System.dll
不添加引用的情况下使用其中的所有内容,但没有添加CompilerParameters
任何内容System.Numerics.dll
。对于后者,我需要添加params.ReferencedAssemblies.Add("System.Numerics.dll")
到我的代码中。
因此我的问题是:我怎么知道默认引用了哪些程序集,哪些没有?
相关代码:
无需添加引用即可编译此代码:
Imports System
Public Class Foo
Public Sub TestClass
Dim t = Tuple.Create(23,241)
End Sub
End Class
此代码不能:
Imports System
Imports System.Numerics
Public Class Foo
Public Sub TestClass
Dim t = Tuple.Create(23,241)
Dim n As New Complex(32,112)
End Sub
End Class
我用来编译的代码(缩写):
Dim params As New CompilerParameters()
'The path of the assembly to create
params.OutputAssembly = active.OutputName
'Compile as dll
params.GenerateExecutable = False
Dim vb As New VBCodeProvider
Dim res = vb.CompileAssemblyFromSource(params, active.Code)