C# 系统数据处理器架构设置为AMD64
交通局已发出以下警告: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (1605):系统的处理器架构不匹配 正在构建的项目“MSIL”和 参考 “C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll”, “AMD64”。这种不匹配可能会导致运行时失败。请考虑 通过更改项目的目标处理器体系结构 配置管理器,以便调整处理器架构 在项目和引用之间,或者依赖于 使用与目标应用程序匹配的处理器体系结构进行引用 项目的处理器架构 “发布”和“调试”配置都设置为使用“任意CPU”作为活动解决方案平台 我将System.Data.dll的副本放入临时文件夹,并通过PowerShell提取了有关此程序集的信息:C# 系统数据处理器架构设置为AMD64,c#,.net,tfs,.net-assembly,jit,C#,.net,Tfs,.net Assembly,Jit,交通局已发出以下警告: C:\Windows\Microsoft.NET\Framework64\v4.0.30319\Microsoft.Common.targets (1605):系统的处理器架构不匹配 正在构建的项目“MSIL”和 参考 “C:\Windows\Microsoft.NET\Framework64\v4.0.30319\System.Data.dll”, “AMD64”。这种不匹配可能会导致运行时失败。请考虑 通过更改项目的目标处理器体系结构 配置管理器,以便调整处理器架构
function ScanAssembly($assemblyPath) {
[reflection.assemblyname]::GetAssemblyName($assemblyPath)
}
$assemblyPath = "C:\TEMP\System.Data.dll"
$assemblyInfo = ScanAssembly($assemblyPath);
$assemblyInfo | fl;
我得到了以下输出:
Name : System.Data
Version : 4.0.0.0
CultureInfo :
CultureName :
CodeBase : file:///C:/TEMP/System.Data.dll
EscapedCodeBase : file:///C:/TEMP/System.Data.dll
ProcessorArchitecture : Amd64
ContentType : Default
Flags : PublicKey
HashAlgorithm : SHA1
VersionCompatibility : SameMachine
KeyPair :
FullName : System.Data, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=...
由于某些原因,此程序集的ProcessorArchitecture设置为Amd64。我不明白为什么会设置为Amd64,因为我在英特尔处理器上运行的是64位操作系统
这些警告并不是止步符,但我很难理解为什么我们会看到它们。如果我理解正确,当为Amd64编译一个程序集时,配置被设置为任何CPU,这意味着它将不再在任何CPU上工作-它将只在64位CPU上工作。我无法理解为什么System.Data.dll是为Amd64构建的
谢谢。关于发生这些错误的原因,您是正确的。如果引用的程序集以特定框架为目标,则编译器会发出警告,说明应用程序不能在“任何CPU”上运行,因为引用的程序集有限制 我们的测试和生产服务器上的System.Data和其他DLL出现了此问题。我们通过安装.Net Framework SDK解决了这个问题。为此:
另一个选项是将项目配置为以64位处理器为目标(如果可以的话),但我们的团队选择了SDK路线。我也遇到了类似的问题。我下载了.NET SDK(虽然我已经有了它,但我“修复了”.NET到了它的原始状态),它工作起来很有魅力。谢谢丽贝卡!为了防止有人感到困惑,AMD64与英特尔vs AMD没有什么关系。它的意思是“64位”。这与“x86”能够在现代CPU上运行是一样的。
Name : System.Data
Version : 4.0.0.0
CultureInfo :
CultureName :
CodeBase : file:///C:/Program Files (x86)/Reference\Assemblies/Microsoft/Framework/.NETFramework/v4.5/System.Data.dll
EscapedCodeBase : file:///C:/Program%20Files%20(x86)/Reference%20Assemblies/Microsoft/Framework/.NETFramework/v4.5/System.Data.dll
ProcessorArchitecture : None
ContentType : Default
Flags : PublicKey
HashAlgorithm : SHA1
VersionCompatibility : SameMachine
KeyPair :
FullName : System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089