我有一个在C#中使用WPF的程序,它使用.NET 4 Framework(非客户端配置文件),并编译一个名为“Source.txt”的源文件。但是,无论何时编译它我都会收到此错误“错误CS02345:名称空间'系统'中不存在类型或命名空间名称'Windows'(您是否缺少程序集引用?)”。没有创建文件。
当我检查Source.txt文件中的行时,会出现错误:
using System.Windows.Linq;
using System.Windows;
using System.Windows.Input;
using System.Windows.Forms;
using System.Management;
这是我用来从主程序编译它的代码:
CompilerParameters Params = new CompilerParameters();
Params.GenerateExecutable = true;
Params.ReferencedAssemblies.Add("System.dll");
Params.OutputAssembly = ServerNameBox.Text;
Params.CompilerOptions = " /target:winexe";
string Source = compileSource;
CompilerResults Results = new CSharpCodeProvider().CompileAssemblyFromSource(Params, Source);
if (Results.Errors.Count > 0)
{
foreach (CompilerError err in Results.Errors)
System.Windows.Forms.MessageBox.Show(err.ToString());
}
else System.Windows.Forms.MessageBox.Show("Sucessfully Compiled Program!");
如代码中所示,我希望将此程序编译为Windows窗体/ GUI应用程序(“/ target:winexe”);
如果此信息不充分,请询问。
答案 0 :(得分:3)
由于错误明确提示,您需要将System.Windows.Forms.dll
添加到ReferencedAssemblies
。
答案 1 :(得分:1)
您需要添加至少以下参考:
Params.ReferencedAssemblies.Add("PresentationFramework.dll");
Params.ReferencedAssemblies.Add("System.Windows.Forms.dll");
Params.ReferencedAssemblies.Add("System.Management.dll");
Params.ReferencedAssemblies.Add("PresentationCore.dll");
此外,我不相信 System.Windows.Linq 是一个实际的命名空间。如果您需要LINQ,它应该是System.Linq,并且位于System.Core.dll
中