0

ディスク上の他のフォルダにある.csプログラムをコンパイルし、別の.csプログラム、コンソールアプリケーション、またはウィンドウアプリケーションを使用して、その.dllを生成したいと思います。私は以下を使ってみました

using (StreamReader textReader = new StreamReader(@"path\Filename.cs"))
{
     textFile = textReader.ReadToEnd();
    Console.WriteLine(textFile);
}
CodeDomProvider codeProvider = new CSharpCodeProvider(); 
ICodeCompiler compiler = codeProvider.CreateCompiler(); 
// add compiler parameters 
CompilerParameters compilerParams = new CompilerParameters();
compilerParams.CompilerOptions = "/target:library /optimize"; 
compilerParams.GenerateExecutable = false; 
compilerParams.GenerateInMemory = true;             
compilerParams.IncludeDebugInformation = false; 
compilerParams.ReferencedAssemblies.Add("mscorlib.dll");
compilerParams.ReferencedAssemblies.Add("System.dll");  
// compile the code 
CompilerResults results = compiler.CompileAssemblyFromSource(compilerParams,        textFile);
4

1 に答える 1

0

具体的なものが見つからなくなるまで、このようなことを考えています。これを試してみてください

Process processCS= new Process();
processCS.StartInfo.WorkingDirectory = @"C:\<your code directory>";
processCS.StartInfo.FileName = @"C:\Windows\Microsoft .NET\Framework\version\csc.exe   /out:yourdllname.dll yourcodefilename.cs";
processCS.StartInfo.CreateNoWindow = true;
processCS.Start();
processCS.WaitForExit();

これをcsファイルから呼び出して、他のcsファイルをコンパイルできます。それが機能するかどうかを確認してください....\

デフォルトでは、プロセスはsystem32 dir内のファイルを検索するため、次のコードを使用して検索します...

ProcessStartInfo info = new ProcessStartInfo(@"C:\Windows\Microsoft.NET\Framework\v3.5\csc.exe");
info.Arguments = @" /out:C:\ss\Class1.dll C:\ss\Class1.cs";
info.UseShellExecute = false;
Process.Start(info);

引数では、csファイルのパスをC:\ ss \ Class1.csとして指定しましたが、パスに従って指定しますが、小さいパスを指定することに注意してください。

于 2012-06-06T09:02:37.627 に答える