C# 为什么Silverlight 5 Assembly.LoadFrom声明为内部? 长长的叹息,又像爱丽丝一样,我发现自己再次跌入兔子洞。也就是微软的决策者
我应该提到我从未安装过SL5测试版。我一直等到真正的释放之后。在安装正式的v5版本之前 因此,我使用Telerik JustDecompile(代替.NET Reflector)加载了fallowing SL程序集,为了彻底起见,我也加入了WP7C# 为什么Silverlight 5 Assembly.LoadFrom声明为内部? 长长的叹息,又像爱丽丝一样,我发现自己再次跌入兔子洞。也就是微软的决策者,c#,silverlight,C#,Silverlight,我应该提到我从未安装过SL5测试版。我一直等到真正的释放之后。在安装正式的v5版本之前 因此,我使用Telerik JustDecompile(代替.NET Reflector)加载了fallowing SL程序集,为了彻底起见,我也加入了WP7 C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\mscorlib.dll C:\Program Files (x86)\Reference
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v3.0\mscorlib.dll
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\mscorlib.dll
C:\Program Files (x86)\Microsoft Silverlight\5.0.61118.0\mscorlib.dll
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\Silverlight\v4.0\Profile\WindowsPhone\mscorlib.dll
在WP7中,System.Reflection.Assembly包含衰减方法
public static Assembly Load(string assemblyString);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
public static Assembly Load(byte[] rawAssembly);
public static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
public static Assembly Load(byte[] rawAssembly);
public static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
internal static Assembly Load(byte[] rawAssembly);
internal static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
internal static Assembly LoadFrom(string assemblyFile);
在SL3中,System.Reflection.Assembly包含衰减方法
public static Assembly Load(string assemblyString);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
public static Assembly Load(byte[] rawAssembly);
public static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
public static Assembly Load(byte[] rawAssembly);
public static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
internal static Assembly Load(byte[] rawAssembly);
internal static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
internal static Assembly LoadFrom(string assemblyFile);
在SL4中,System.Reflection.Assembly包含衰减方法
public static Assembly Load(string assemblyString);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
public static Assembly Load(byte[] rawAssembly);
public static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
public static Assembly Load(byte[] rawAssembly);
public static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
internal static Assembly Load(byte[] rawAssembly);
internal static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
internal static Assembly LoadFrom(string assemblyFile);
在SL5中,System.Reflection.Assembly包含衰减方法
public static Assembly Load(string assemblyString);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
public static Assembly Load(byte[] rawAssembly);
public static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
public static Assembly Load(byte[] rawAssembly);
public static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
public static Assembly LoadFrom(string assemblyFile);
public static Assembly Load(string assemblyString);
internal static Assembly Load(byte[] rawAssembly);
internal static Assembly Load(byte[] rawAssembly, byte[] rawSymbolStore);
internal static Assembly LoadFrom(string assemblyFile);
现在我不得不问到底发生了什么?!?SL5中的Load和LoadFrom已更改为internal!为什么?我这样问是因为在不同的地方,尽管我编写了代码,但我还是使用LoadFrom从磁盘加载程序集。我的代码最初是为XNA3编写的,然后移植到XNA4,然后再移植到SL4,但随着我更新到SL5,LoadFrom不再可用。为什么一个功能在最后2个或更多版本中可用,但却隐藏在SL5中
我已经在Silverlight论坛上发布了这个问题,但没有得到任何回应,而SL5的“新增内容”和“变更内容”文档似乎也没有提及这个问题。来自
LoadFrom方法有以下缺点。考虑使用
改为加载
如果已加载具有相同标识的程序集,则LoadFrom
即使指定了不同的路径,也返回加载的程序集
如果使用LoadFrom加载程序集,然后在
加载上下文尝试按显示名称加载相同的程序集
加载尝试失败。当程序集反序列化时,可能会发生这种情况
如果使用LoadFrom加载程序集,并且探测路径包括
具有相同标识但位置不同的程序集
InvalidCastException、MissingMethodException或其他意外情况
行为可能发生
LoadFrom要求FileIOPermissionAccess.Read和
上的FileIOPermissionAccess.PathDiscovery或WebPermission
指定的路径
如果assemblyFile存在本机映像,则不会使用它。这个
程序集不能作为非特定域加载
在.NET Framework 1.0和1.1版中,不应用策略
一段时间以来,不使用LoadFrom一直是一种很好的做法。我怀疑这只是这种做法的形式化。我不知道为什么范围会改变。我最好的猜测是,它们曾经被标记为SecurityCritical,然后在以后的更新中只是内部更新。如果您想将程序集加载到内存中,请尝试方法.Hmm,[FriendAccessAllowed],这很新颖。你是如何变得友好的还不清楚。