TFS 已发出以下警告:
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 的副本放入 TEMP 文件夹,并通过 PowerShell 提取有关此程序集的信息:
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 感到困惑,因为我在 Intel 处理器上运行 64 位操作系统。
这些警告不是显示停止器,但我很难理解为什么我们会看到它们。如果我理解正确,配置设置为任何 CPU,当其中一个程序集为 Amd64 编译时,这意味着它将不再在任何 CPU 上工作 - 它只能在 64 位 CPU 上工作。为什么 System.Data.dll 是为 Amd64 构建的,这超出了我的理解。
谢谢你。