Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# .Net脚本引擎(C)-是否存在某种;头文件";或;dll引用文件";对于.Net语言?_C#_.net_Vb.net_Visual Studio_Jscript.net - Fatal编程技术网

C# .Net脚本引擎(C)-是否存在某种;头文件";或;dll引用文件";对于.Net语言?

C# .Net脚本引擎(C)-是否存在某种;头文件";或;dll引用文件";对于.Net语言?,c#,.net,vb.net,visual-studio,jscript.net,C#,.net,Vb.net,Visual Studio,Jscript.net,我正在用C语言制作一个小型脚本引擎,我想知道,是否有某种编译器指令或其他类似头文件的文件可以用脚本文件编译,以定义脚本文件引用的托管DLL public static CompilerResults LoadScript( string SourceCodeFile, string[] References) { var Parameters = new CompilerParameters() { GenerateExecutable = false,

我正在用C语言制作一个小型脚本引擎,我想知道,是否有某种编译器指令或其他类似头文件的文件可以用脚本文件编译,以定义脚本文件引用的托管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);
}
我希望能够消除这一行代码:并将这些信息放在我的脚本中。问题是我不一定提前知道脚本将引用什么.dll。我目前的解决方案是解析一个自定义的“script.cs.refs”文件,该文件如下所示:
Parameters.ReferencedAssemblies.AddRange(References);
"System.dll","System.Data.dll","SomeOther.dll","Ect.dll"

如果您能帮助了解visual studio在何处存储对DLL的引用,以及它是否必须在单独的文件中定义,是否有我应该使用的标准格式,可以加载到告诉它此信息的编译器中,我们将不胜感激

不能在C#源代码中指定程序集引用,否

Visual Studio将在编译程序生成项目时将项目中的引用传递给编译器

请注意,在使用命令行时,有一个包含一组选项的概念。这可以在命令行上指定,或者在.NET framework目录中有一个默认的
csc.resp
文件,该文件具有包括引用在内的默认选项,但我怀疑这是从
CSharpCodeProvider
使用的


您可能有自己的“特殊注释”格式,列出引用-解析提供给您的脚本以获取这些引用,然后传入这些引用。

我认为没有标准的解决方案,除了可以采用类似ASP.NET的方法,在源文件中定义对程序集的引用

然后你需要

  • 解析源代码文件以查找程序集引用
  • 将它们传递给编译器参数
  • 确保源代码中定义引用的行不会生成编译错误
  • 要实现3,可以在注释中定义引用。e、 g

    //@ Assembly name="SomeOther.dll"
    

    然后,您可以为这些/@行regex sourcode文件并解析出程序集名称。

    这正是我所担心的,我想我现在可以在脚本文件顶部的注释中定义该信息。。。