私はC#で小さなスクリプトエンジンを作っていますが、何らかの#compilerディレクティブやその他のヘッダーのようなファイルがあります。私のスクリプトファイルでコンパイルして、管理されたDllのスクリプトファイルを定義できますか?参照していますか?.Net Scripting Engine(C#) - .Net言語用の「ヘッダーファイル」または「dll参照ファイル」がありますか?
public static CompilerResults LoadScript(
string SourceCodeFile, string[] References)
{
var Parameters = new CompilerParameters()
{
GenerateExecutable = false,
GenerateInMemory = true,
IncludeDebugInformation = false,
};
Parameters.ReferencedAssemblies.AddRange(References);
return CSharpCodeProvider.CreateProvider(
CSharpCodeProvider.GetLanguageFromExtension(
Path.GetExtension(SourceCodeFile)))
.CompileAssemblyFromFile(Parameters, SourceCodeFile);
}
私はこのコード行排除することができるのが大好きだ
:
Parameters.ReferencedAssemblies.AddRange(References);
をし、代わりに私のスクリプトでその情報を置きます。問題は、スクリプトが参照するものが何であるかを必ず事前に知っているというわけではありません。私の現在の解決策は、次のようなカスタム "script.cs.refs"ファイルを解析することです:
"System.dll","System.Data.dll","SomeOther.dll","Ect.dll"
Visual Studioがdllへの参照をどこに格納するのか、別のファイル標準化された形式があれば、この情報を伝えるコンパイラに読み込むことができるはずです。大いに感謝します!
これは私が恐れていたことですが、今のところスクリプトファイルの先頭のコメントにその情報を定義できると思います... – Fox