Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/silverlight/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么Silverlight 5 Assembly.LoadFrom声明为内部? 长长的叹息,又像爱丽丝一样,我发现自己再次跌入兔子洞。也就是微软的决策者_C#_Silverlight - Fatal编程技术网

C# 为什么Silverlight 5 Assembly.LoadFrom声明为内部? 长长的叹息,又像爱丽丝一样,我发现自己再次跌入兔子洞。也就是微软的决策者

C# 为什么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

我应该提到我从未安装过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 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],这很新颖。你是如何变得友好的还不清楚。