CodeDom编译器:默认情况下引用哪些程序集?

时间:2015-04-01 16:44:06

标签: c# vb.net reference runtime-compilation system-codedom-compiler

简短:.NET CodeDom编译器(CSharpCodeProviderVBCodeProvider)默认包含哪些程序集(框架DLL),而没有明确地添加对CompilerParameters的引用?


我正在使用CodeDom工具,即CSharpCodeProviderVBCodeProvider,在运行时编译程序集。我注意到,默认情况下包含了一些但不是所有的.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)

0 个答案:

没有答案