Ich möchte mehrere .cs-Dateien zu einem ausführbaren Programm kompilieren. Mein CodeDomProvider findet nicht die Verwendung von Deklarationen, die ich in die .cs-Dateien geschrieben habe. Insbesondere folgende Fehlermeldungen werden erzeugt:Wie können Deklaratives mit CodeDomProvider in C# eingebunden werden?
-Der Typ- oder Namespace 'CodeDom' im Namespace 'System' ist nicht verfügbar.
-Der Typ- oder Namespace 'Windows' im Namespace 'System' ist nicht verfügbar.
-Der Typ- oder Namespace 'Stack' konnte nicht gefunden werden.
Aus dieser Funktion, ich rufe die 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());
}
Meine Frage ist, wie kann ich die System.CodeDom
, System.Windows
und die System.Collections.Stack
librarys in das Projekt gehören zu kompilieren.
Mit dem Befehl:
cs.ReferencedAssemblies.Add("System.CodeDom.dll");
...
es funktioniert nicht!
cp.ReferencedAssemblies.Add ("System.dll"); –