Компилятор 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)