繁体   English   中英

如何获取在运行时生成的程序集以使用项目依赖关系? C#

[英]How to get Assemblies Generated at Runtime to use Project Dependencies? C#

是否可以允许动态生成的程序集访问生成新程序集的项目中存在的依赖项? 我正在使用Unity和C#,并添加了一个程序集,该程序集包含它现在所属的项目中存在的依赖项,但出现此错误:FileNotFoundException:无法加载文件或程序集'ModAssembly000.dll'或其依赖项之一。 我收到此错误,因为我尝试将“ using UnityEngine”放在脚本顶部。 这是项目中已经存在的代码,用于获取新程序集并调用方法:

        CompilerParameters parameters = new CompilerParameters();
    parameters.GenerateExecutable = false;
    parameters.GenerateInMemory = true;
    parameters.OutputAssembly = generatedName;
    CompilerResults r = CodeDomProvider.CreateProvider("CSharp").CompileAssemblyFromFile(parameters, filePath);
    r.CompiledAssembly.GetType("ModData").GetMethod("Run").Invoke(null, BindingFlags.Static, null, null, null);

这是动态创建的程序集的来源:

using UnityEngine;

public class ModData {
    public static string modName = "Super kool mod";
    public static string modVersion = "1.2.1";

    public static void Run() {
        Debug.Log("it worked :D");
    }
}

生成此程序集的代码中存在UnityEngine(因此为Debug.Log)。 有没有办法让新创建的程序集使用其上方存在的UnityEngine,以便我可以允许新代码在其上方的项目中执行任何操作? 我知道ModAssembly000.dll存在,因为如果我删除“ using UnityEngine”行,那么我可以毫无问题地访问动态程序集的静态字符串字段。

我的猜测是您需要将Unity添加到引用程序集的列表中:

parameters.ReferencedAssemblies.Add("UnityEngine.dll");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM