複数の.csファイルを実行可能プログラムにコンパイルしたい。 私のCodeDomProviderは、.csファイルに書き込んだ使用宣言を見つけられません。特に以下のエラーメッセージが作成されます。C#でCodeDomProviderで宣言を使用する方法は?
- 名前空間 'System'の 'CodeDom'は使用できません。
- 名前空間 '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());
}
私の質問は、私は、コンパイルするプロジェクトにSystem.CodeDom
、System.Windows
とSystem.Collections.Stack
librarysを含めることができるか、です。コマンドで
:
cs.ReferencedAssemblies.Add("System.CodeDom.dll");
...
それは動作しません!
cp.ReferencedAssemblies.Add( "System.dll"); –