Компилятор CodeDom: На какие сборки есть ссылки по умолчанию?

Коротко: Какие сборки (Framework 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)

0 ответов

Другие вопросы по тегам