C# 汇编.加载处理器体系结构规则

C# 汇编.加载处理器体系结构规则,c#,reflection,C#,Reflection,加载程序集时,应使用assembly.FullName而不是assembly.Name,以避免冲突,冲突的格式如下: SampleAssembly,版本=1.0.2004.0,区域性=中性,PublicKeyToken=8744b20f8da049e3 从MSDN文档中,此字符串还可以包括“ProcessorArchitecture=?”其中????可以是MSIL、X86等,但是可选的 当ProcessorArchitecture属性未在assemblyName字符串中定义时,Assembly.

加载程序集时,应使用assembly.FullName而不是assembly.Name,以避免冲突,冲突的格式如下:

SampleAssembly,版本=1.0.2004.0,区域性=中性,PublicKeyToken=8744b20f8da049e3

从MSDN文档中,此字符串还可以包括“ProcessorArchitecture=?”其中????可以是MSIL、X86等,但是可选的

当ProcessorArchitecture属性未在assemblyName字符串中定义时,Assembly.Load使用什么规则查询GAC以加载为多处理器体系结构(x86、Amd64、MSIL)编译的程序集


提前感谢您的帮助。

这是含蓄的。当Assembly.Load()语句运行时,加载程序填充程序已经决定进程是以32位还是64位模式运行。所以,当它决定使用64位模式时,只有以msil或amd64为目标的程序集才能工作


GAC分为3部分,子目录名为GAC_MSIL、GAC_32和GAC_64。fusion加载程序将首先在GAC_MSIL中查找,以查看是否可以找到匹配的程序集。然后在另外两个中的一个中寻找匹配项。没有歧义。

它是隐含的。当Assembly.Load()语句运行时,加载程序填充程序已经决定进程是以32位还是64位模式运行。所以,当它决定使用64位模式时,只有以msil或amd64为目标的程序集才能工作


GAC分为3部分,子目录名为GAC_MSIL、GAC_32和GAC_64。fusion加载程序将首先在GAC_MSIL中查找,以查看是否可以找到匹配的程序集。然后在另外两个中的一个中寻找匹配项。没有歧义。

谢谢您的回复。我很确定这是含蓄的。因此,由于我想针对数据库复制此行为,我首先要检查是否存在MSIL程序集,如果不存在,则根据处理器体系结构检查是否存在32位或64位程序集。使用.NET4.0实现处理器体系结构的最佳方法是什么?P/Invoke或类似Assembly.getExecutionGassembly().GetName().ProcessorArchitecture?IntPtr.Size的东西。以64位模式运行时为8。感谢您的回复。我很确定这是含蓄的。因此,由于我想针对数据库复制此行为,我首先要检查是否存在MSIL程序集,如果不存在,则根据处理器体系结构检查是否存在32位或64位程序集。使用.NET4.0实现处理器体系结构的最佳方法是什么?P/Invoke或类似Assembly.getExecutionGassembly().GetName().ProcessorArchitecture?IntPtr.Size的东西。在64位模式下运行时为8。