CSharpCodeProviderを使用してオンザフライでc#ソースからexeを作成するためのコードがいくつかあります。これは次のとおりです。
public static void BuildAssembly(string code)
{
Microsoft.CSharp.CSharpCodeProvider provider =
new CSharpCodeProvider();
ICodeCompiler compiler = provider.CreateCompiler();
CompilerParameters compilerparams = new CompilerParameters();
compilerparams.ReferencedAssemblies.Add("System.dll");
compilerparams.GenerateExecutable = true;
compilerparams.GenerateInMemory = false;
compilerparams.OutputAssembly = @"C:\Users\me\AppData\Roaming\test.exe";
CompilerResults results =
compiler.CompileAssemblyFromSource(compilerparams, code);
if (results.Errors.HasErrors)
{
StringBuilder errors = new StringBuilder("Compiler Errors :\r\n");
foreach (CompilerError error in results.Errors)
{
errors.AppendFormat("Line {0},{1}\t: {2}\n",
error.Line, error.Column, error.ErrorText);
}
throw new Exception(errors.ToString());
}
else
{
}
}
すべて正常に動作し、コンソールアプリケーションのc#コードをコンパイルします。しかし、コンソールアプリを作成していて、コンソールが表示されないようにする必要がある場合は、アプリケーションのプロパティに移動して、出力タイプをコンソールからWindowsアプリケーションに変更するだけです。では、上に貼り付けた関数を使用してこれをどのように行うのでしょうか?私はすべてのオプションを調べましたが、..わかりません:(
ありがとう。