我有这个使用的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问题。