该程序集加载应如何工作?

时间:2019-05-23 06:56:46

标签: c# .net .net-standard .net-framework-version

我有这个使用的NuGet软件包Microsoft.CodeAnalysis.Scripting.Common版本2.6.1。此程序包中的程序集面向.NET Standard 1.3

我有一个.NET Framework桌面控制台应用程序net461,可以像这样强制加载所有引用的程序集。

HashSet<string> visited = new HashSet<string>();

void WalkReferencedAssemblies(Assembly assembly)
{
    if (assembly.IsDynamic)
    {
        return;
    }
    foreach (var r in assembly.GetReferencedAssemblies())
    {
        if (visited.Add(r.FullName))
        {
            WalkReferencedAssemblies(Assembly.Load(r));
        }
    }
}

最终我遇到了这个错误。

  

无法加载文件或程序集'System.Runtime.Loader,版本= 4.0.0.0,区域性=中性,PublicKeyToken = b03f5f7f11d50a3a'或其依赖项之一。系统找不到指定的文件。

我无法理解但希望理解的是它应该如何工作。鉴于这恰好是程序集元数据所说的,所以发生这种情况是没有错的,但是我也了解到.NET Framework桌面CLR上没有使用System.Runtime.Loader。处理此问题的正确方法是什么?我怎么知道我必须以某种奇怪且未记录的方式处理这些引用?到目前为止,我主要阅读了遍布在corefx存储库中的各种GitHub问题。

0 个答案:

没有答案