2017-02-26 4 views
0

私はC#で書かれた別のC#コードをコンパイルすることができます。csc.exeからC#コード

私は次のコード書かれているこれまでのところ:

string cscPath = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe"; 
string command = "/c \"" + cscPath + "\" /out:\"" + resultsFilePath 
+ "\" /reference:\"" + dllPath 
+ "\" \"" + csFilePath + "\" > \"" + resultsPath + "\\result.txt\""; 

Process.Start("cmd.exe", command); 

result.txtファイルが作成されていないと私は、エラーメッセージを確認する方法がわかりません。

私はこのような何かを実行する場合:

string command = "/c echo something > \"" + resultsPath + "\\result.txt\""; 
Process.Start("cmd.exe", command); 

それが動作し、result.txtが "何か" という単語が含まれています。

は、私は、Visual Studio 2012

+0

コンソールに 'command'を印刷してCMDで手動で実行しようとしましたか?おそらくあなたは以前にも期待していたコマンドではないことがわかります。 – KernelMode

+0

はい。コマンド・ストリングを(デバッグ・プロセス中に)コピーし、コマンド・ウィンドウで手動で実行しました。できます。 – holocen

答えて

0

あなた自身をcsc.exe呼び出しのトラブルを通過する必要はありませんので、すでに組み込みの場でC#コードをコンパイルする可能性が実際にそこにあると連携します。 はそれを行う方法を説明し、次のブログの記事を見ている:あなたがとにかくそれをしたい場合は https://blogs.msdn.microsoft.com/abhinaba/2006/02/09/c-writing-extendable-applications-using-on-the-fly-compilation/

をcsc.exeを呼び出しを通じて、あなたはコマンドラインから直接ではなくcsc.exeを呼び出してみてください:

string cscPath = @"C:\Windows\Microsoft.NET\Framework\v4.0.30319\csc.exe"; 
var cscArguments = "..."; 
Process.Start(cscPath, cscArguments); 

エラーを見つけるには、コマンドラインから全く同じコマンドを実行して、そこの出力を確認してください。それはあなたを正しい軌道に導くはずです。

関連する問題