2

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

0 回答 0