我正在尝试从CodeDom CodeCompileUnit生产CIL组件。我了解不再支持CodeDom ,但出于各种原因,我仍需要使用它。将CodeCompileUnit编译为C#或VB.NET文件可以按预期工作,但是当我尝试编译为程序集DLL文件时,出现“此平台不支持该操作”。
我尝试更改CompilerParameters
字段值(例如GenerateExecutable,GenerateInMemory),但还是一样。我不知道这是什么问题,但我仍然尝试过。我也尝试使用CodeDomProvider.CreateProvider("CSharp")
,但还是一样。
这是我正在使用的代码:
p.ReferencedAssemblies.Add("System.dll");
p.OutputAssembly = Path.Combine(directory, "Abc.dll");
CompilerResults res = new CSharpCodeProvider().CompileAssemblyFromDom(p, compileUnit);
这是完整的错误消息:
Unhandled Exception: System.PlatformNotSupportedException: Operation is not supported on this platform.
at Microsoft.CSharp.CSharpCodeGenerator.FromFileBatch(CompilerParameters options, String[] fileNames)
at Microsoft.CSharp.CSharpCodeGenerator.System.CodeDom.Compiler.ICodeCompiler.CompileAssemblyFromDomBatch(CompilerParameters options, CodeCompileUnit[] ea)
它应该输出Abc.dll
文件,但是正如我所说,我遇到了错误。