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

问题描述 投票:1回答:1

我有此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问题。

c# .net .net-standard
1个回答
-1
投票

您是否能够找到解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.