许多.NET程序集都提供仅包含元数据而剥离了实际代码的参考版本。
例如,我可以在我的计算机上找到 System.Core.dll 的几个位置,其中两个如下:
例如,我可以在我的计算机上找到 System.Core.dll 的几个位置,其中两个如下:
- C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework.NETFramework\v4.0\System.Core.dll 大小:276 KB
- C:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.Core\v4.0_4.0.0.0__b77a5c561934e089\System.Core.dll 大小:1291 KB
System.BadImageFormatException: Could not load file or assembly 'System.Core, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. 不应该为执行加载参考程序集。它们只能在反射加载器上下文中加载。
给定一个程序集的路径,能否找出它是否为“引用程序集”?
我可以检查路径中是否包含关键字“Reference Assemblies”,但这样是hacky的,如果程序集被复制到不同的位置那么这种方法就不起作用了。 如果有必要,我可以在反射上下文中首先加载程序集。