0
我想編譯幾個.cs文件到一個可執行程序。 我的CodeDomProvider沒有找到我寫入.cs文件的使用聲明。特別是下列錯誤消息被創建:如何在c#中包含使用聲明與CodeDomProvider?
- 命名空間'System'中的類型或命名空間'CodeDom'不可用。
- 名稱空間「系統」中的類型或命名空間「Windows」不可用。
- 無法找到類型或名稱空間「堆棧」。
從這個功能,我打電話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());
}
我的問題是,我怎麼能包括System.CodeDom
,System.Windows
和System.Collections.Stack
圖書館的入項目進行編譯。
用命令:
cs.ReferencedAssemblies.Add("System.CodeDom.dll");
...
這是行不通的!
cp.ReferencedAssemblies.Add(「System.dll」); –