CodeDom で新しい .cs ファイルを作成していますが、後で CSharpCodeProvider でコンパイル/実行したいのですが、参照に問題があります。
コードは次のようになります。
var provider = new CSharpCodeProvider();
var compilerparams = new CompilerParameters(
new[]
{
"First.dll",
"Second.dll"
})
{
GenerateExecutable = false,
GenerateInMemory = true
};
CompilerResults results = provider.CompileAssemblyFromFile(compilerparams, _path);
if (!results.Errors.HasErrors)
return results.CompiledAssembly;
var 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());
「First.dll」と「Second.dll」は、生成された .cs ファイルと同じフォルダーに存在し、直接実行するとエラーが発生します。それらを自分のプロジェクトの bin ディレクトリに移動すると問題なく動作しますが、それらを分離したままにしておきます。
"First.dll" と "Second.dll" の絶対パス、または bin ディレクトリに移動する代わりに、すべての参照を含むディレクトリへのパスを設定することはできますか?
CompilerParameters を絶対パスに変更しようとしましたが、役に立ちませんでした。