C# 警告MSB3270体系结构不匹配/AL1073针对不同的处理器
我有具有本地化资源和x64本机依赖项的项目。有没有办法在没有警告的情况下构建它们 如果我将目标平台设置为AnyCPU,由于本机引用,我会收到此警告: 警告MSB3270:正在生成的项目的处理器体系结构“MSIL”与引用“Native64”、“AMD64”的处理器体系结构不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器架构,以便在项目和引用之间对齐处理器体系结构,或者依赖于与您的项目的目标处理器体系结构相匹配的处理器体系结构的引用。 好吧,很公平,但是: 如果我将目标平台设置为x64,我会收到此警告,因为本地化资源会自动创建具有错误目标体系结构的附属程序集: ALINK:警告AL1073:引用的程序集“mscorlib.dll”以其他处理器为目标 说这是一个错误,但他们不会修复它 那么现在该怎么办呢?这里有一个解决方法: 通过使用与您尝试构建的平台(或比特数)匹配的AL.EXE,可以避免此问题。也就是说,当您构建x64时,您将看到它正试图在类似于的路径上使用AL.EXEC# 警告MSB3270体系结构不匹配/AL1073针对不同的处理器,c#,c++,visual-studio,C#,C++,Visual Studio,我有具有本地化资源和x64本机依赖项的项目。有没有办法在没有警告的情况下构建它们 如果我将目标平台设置为AnyCPU,由于本机引用,我会收到此警告: 警告MSB3270:正在生成的项目的处理器体系结构“MSIL”与引用“Native64”、“AMD64”的处理器体系结构不匹配。这种不匹配可能会导致运行时失败。请考虑通过配置管理器更改项目的目标处理器架构,以便在项目和引用之间对齐处理器体系结构,或者依赖于与您的项目的目标处理器体系结构相匹配的处理器体系结构的引用。 好吧,很公平,但是: 如果我将目
C:\ProgramFiles(x86)\Microsoft SDK\Windows\v10.0A\bin\NETFX 4.6工具
如果你能让它使用x64版本的AL.exe,这个问题就会消失。也就是说,在类似于以下路径的位置使用AL.EXE:
C:\ProgramFiles(x86)\Microsoft SDK\Windows\v10.0A\bin\NETFX 4.6 Tools\x64
Msbuild使用其targetFrameworkDKTools目录
查找此路径。因此,假设在构建x86时此目录是正确的目录,下面的解决方法实质上是在构建x64时将x64子目录附加到路径上,并保持原样:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<TargetFrameworkSDKToolsDirectory Condition=" '$(PlatformTarget)' == 'x64'">$(TargetFrameworkSDKToolsDirectory)$(PlatformTarget)\</TargetFrameworkSDKToolsDirectory>
</PropertyGroup>
</Project>
$(TargetFrameworkDKToolsDirectory)$(PlatformTarget)\
这对于Microsoft来说并不容易修复,ALINK有很多用途,不仅仅是构建没有代码的程序集。警告没有用处的那种。你必须自己接管卫星程序集的构建,这样你才能使用64位版本的al.exe。从技术上讲,这是不实用的。这是如何工作的?为什么不实用?(为什么这不是一个简单的修复程序?他们不能将这些附属程序集构建为x64吗?为什么需要64位版本的al.exe?)看起来在项目文件末尾添加
$(targetFrameworkDKToolsDirectory)$(PlatformTarget)\
会删除警告
<Import Project="MsBuildAL1073WarningWorkaround.targets" />
<!-- To modify your build process... -->