短い: CompilerParameters への参照を明示的に追加せずに、既定で .NET CodeDom コンパイラ (CSharpCodeProvider
または) に含まれているアセンブリ (フレームワーク DLL) はどれですか?VBCodeProvider
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)