我正在用 C# 制作一个小型脚本引擎,我想知道是否有某种#compiler 指令或某种其他类似头文件的文件我可以用我的脚本文件编译以定义我的脚本文件引用的托管 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);
并将这些信息放在我的脚本中。问题是我不一定提前知道脚本将引用什么 .dll。我目前的解决方案是解析一个看起来像这样的自定义“script.cs.refs”文件:"System.dll","System.Data.dll","SomeOther.dll","Ect.dll"
有关找出 Visual Studio 将您对 dll 的引用存储在何处以及是否必须在单独的文件中定义它的任何帮助,如果有我应该使用的标准化格式,我可以将其加载到告诉它此信息的编译器中,将是非常感激!