0

我正在尝试使用 Roslyn 编译一个脚本,但无论我做什么,它一直在抱怨这个,此时我几乎尝试了所有东西,不知道接下来要尝试什么。

这是我得到的错误:

'(11,7): 错误 CS0246: 找不到类型或命名空间名称''(您是否缺少 using 指令或程序集引用?)'

它抱怨找不到命名空间

我已经添加了对文件的引用,甚至将程序集添加到 InteractiveAssemblyLoader 但仍然没有运气。

        try
        {
#if (DEBUG)
            var metadataReferences = ApplicationSettings.Instance.GetValuesAsStringList("Script editor", "MetadataReferences_VOP");
#else
            var metadataReferences = ApplicationSettings.Instance.GetValuesAsStringList("Script editor", "MetadataReferences");
#endif

            var scriptOptions = ScriptOptions.Default.WithEmitDebugInformation(true);
            scriptOptions.AddReferences(metadataReferences);

            using var assemblyLoader = new InteractiveAssemblyLoader();

            foreach(var reference in metadataReferences)
                assemblyLoader.RegisterDependency(Assembly.Load(File.ReadAllBytes(reference)));

            scriptRunner = CSharpScript
                .Create<string>(script, scriptOptions, typeof(MainGlobals), assemblyLoader)
                .ContinueWith("new NewEmail().Main(Email)")
                .CreateDelegate();

            exception = null;
            return true;
        }
        catch (Exception e)
        {
            exception = e;
            scriptRunner = null;
            return false;
        }

有人知道接下来要尝试什么吗?

4

1 回答 1

0

似乎 AddReferences 返回了一个新的 scriptOptions 对象,该对象是添加了引用的对象:-)

所以解决方案很简单,只需这样做

scriptOptions = scriptOptions.AddReferences(metadataReferences);

于 2022-02-11T12:12:20.370 回答