我目前正在开发一个使用 CSharpCodeProvider 生成可执行文件的程序。而且我需要添加对 COM-Lib(“Windows 脚本宿主模型”(wshom.ocx))的引用。该文件位于 sysWOW64-Path 中。每次我尝试编译文件时,它都会给我这个错误:
“元数据文件 'c:\Windows\SysWOW64\wshom.ocx' 无法打开 - '试图加载格式不正确的程序。”
问题不是平台问题:无论我设置什么平台,都会出现错误。我试图设置 /platform:x86 参数;我试图将“Builder”的平台更改为 x86,但并没有解决问题。
这是我用来编译的代码:
CSharpCodeProvider provider = new CSharpCodeProvider(d);
ICodeCompiler icc = provider.CreateCompiler();
CompilerParameters parameters = new CompilerParameters();
parameters.IncludeDebugInformation = false;
parameters.OutputAssembly = destinationDialog.FileName;
parameters.GenerateExecutable = true;
parameters.TreatWarningsAsErrors = false;
parameters.ReferencedAssemblies.Add("System.dll");
parameters.ReferencedAssemblies.Add("System.Core.dll");
parameters.ReferencedAssemblies.Add("Microsoft.VisualBasic.dll");
parameters.ReferencedAssemblies.Add("System.Drawing.dll");
parameters.ReferencedAssemblies.Add("System.Management.dll");
parameters.ReferencedAssemblies.Add("System.Data.DataSetExtensions.dll");
parameters.ReferencedAssemblies.Add("System.XML.dll");
parameters.ReferencedAssemblies.Add("System.Xml.Linq.dll");
parameters.ReferencedAssemblies.Add(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86) + @"\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\Profile\Client\System.Speech.dll");
parameters.ReferencedAssemblies.Add("System.Windows.Forms.dll");
parameters.ReferencedAssemblies.Add("Microsoft.CSharp.dll");
parameters.ReferencedAssemblies.Add(GetSystemDirectory() + "\\wshom.ocx");
parameters.CompilerOptions = "/unsafe /target:winexe /platform:x86";
CompilerResults results = icc.CompileAssemblyFromSource(parameters, uss);
我希望有人可以在这里帮助我...