如何在c#中包括对CodeDomProvider使用声明词?
我想把几个.cs文件编译成一个可执行程序。 我的CodeDomProvider没有找到我写入.cs文件的using声明。特别是创建了以下错误消息: -命名空间“System”中的类型或命名空间“CodeDom”不可用。如何在c#中包括对CodeDomProvider使用声明词?,c#,codedom,C#,Codedom,我想把几个.cs文件编译成一个可执行程序。 我的CodeDomProvider没有找到我写入.cs文件的using声明。特别是创建了以下错误消息: -命名空间“System”中的类型或命名空间“CodeDom”不可用。 -命名空间“System”中的类型或命名空间“Windows”不可用。 -找不到类型或命名空间“Stack” 通过此函数,我调用CodeDomProvider: private CompileParserSolution() { List<s
-命名空间“System”中的类型或命名空间“Windows”不可用。
-找不到类型或命名空间“Stack” 通过此函数,我调用CodeDomProvider:
private CompileParserSolution()
{
List<string> cSharpFiles = new List<string>();
DirectoryInfo dir = new DirectoryInfo(Path.Combine(_inData.ProjectDir, @"NCParser\NCParser"));
foreach (FileInfo f in dir.GetFiles("*.cs"))
{
cSharpFiles.Add(Path.Combine(dir.FullName, f.Name));
}
CodeDomProvider provider = CodeDomProvider.CreateProvider("CSharp");
CompilerParameters cp = new CompilerParameters();
cp.GenerateExecutable = true;
cp.OutputAssembly = "Parser_TEST.exe";
cp.GenerateInMemory = true;
cp.TreatWarningsAsErrors = false;
cp.ReferencedAssemblies.Add("System.Linq.dll");
cp.ReferencedAssemblies.Add("System.Text.RegularExpressions.dll");
cp.ReferencedAssemblies.Add(Path.Combine(_inData.ProjectDir, @"NCParser\NCParser", @"QUT.ShiftReduceParser.dll"));
CompilerResults cr = provider.CompileAssemblyFromFile(cp, cSharpFiles.ToArray());
}
它不起作用 程序集和名称空间之间不是1:1对应的。要查找特定类型的程序集,请查看其MSDN文档
- 没有System.CodeDom.dll,许多CodeDom类型都在System.dll中,您没有引用它们
同样位于System.dll中堆栈
- WPF分布在多个程序集中,基本类型在PresentationFramework.dll中
引用这些程序集可能会解决您的问题。程序集和名称空间之间的比例不是1:1。要查找特定类型的程序集,请查看其MSDN文档
- 没有System.CodeDom.dll,许多CodeDom类型都在System.dll中,您没有引用它们
同样位于System.dll中堆栈
- WPF分布在多个程序集中,基本类型在PresentationFramework.dll中
cs.ReferencedAssemblies.Add("System.CodeDom.dll");
...