2

我有一个在 C# 中使用 WPF 的程序,它使用 .NET 4 Framework(不是客户端配置文件),它编译了一个名为“Source.txt”的源文件。但是,无论何时编译它,我都会收到此错误“错误 CS02345:名称空间‘System’中不存在类型或名称空间名称‘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”);

如果这些信息不充分,请询问。

4

2 回答 2

3

正如错误清楚地暗示的那样,您需要添加System.Windows.Forms.dllReferencedAssemblies.

于 2012-10-21T20:55:12.210 回答
1

You need to add at least the following references:

Params.ReferencedAssemblies.Add("PresentationFramework.dll");
Params.ReferencedAssemblies.Add("System.Windows.Forms.dll");
Params.ReferencedAssemblies.Add("System.Management.dll");
Params.ReferencedAssemblies.Add("PresentationCore.dll");

Also I don't believe System.Windows.Linq is an actual namespace. If you need LINQ it should be System.Linq and that is in System.Core.dll

于 2012-10-21T21:04:56.533 回答