简短:.NET CodeDom编译器(CSharpCodeProvider
或VBCodeProvider
)默认包含哪些程序集(框架DLL),而没有明确地添加对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)