首页 文章

警告MSB3270架构不匹配/ AL1073针对不同的处理器

提问于
浏览
3

我有具有本地化资源和x64本机依赖项的项目 . 有没有办法在没有警告的情况下建造它们?

如果我将目标平台设置为AnyCPU,我会因为本机引用而收到此警告:

警告MSB3270:正在构建的项目“MSIL”的处理器体系结构与参考“Native64”,“AMD64”的处理器体系结构之间存在不匹配 . 这种不匹配可能会导致运行时故障 . 请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者依赖于具有与项目的目标处理器体系结构相匹配的处理器体系结构的引用 .

确定公平,但是:

如果我将目标平台设置为x64,我会收到此警告,因为本地化资源会自动创建具有错误目标体系结构的附属程序集:

ALINK:警告AL1073:引用程序集“mscorlib.dll”针对不同的处理器

Microsoft说这是一个错误,但他们不会修复它 .

那么现在怎么办?

1 回答

  • 3

    这是一个解决方法:

    通过使用与您尝试构建的平台(或位数)匹配的AL.EXE可以避免此问题 . 也就是说,当你构建x64时,你会看到它试图在类似于路径的路径上使用AL.EXE

    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools

    如果你可以使用它的x64版本的AL.exe,问题就会消失 . 也就是说,在类似于以下的路径上使用AL.EXE:

    C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.6 Tools\x64

    Msbuild使用 TargetFrameworkSDKToolsDirectory 找到此路径 . 因此,假设在构建x86时此目录是正确的目录,下面的解决方法基本上将x64子目录附加到构建x64的路径上,并保留原样:

    • 创建一个MsBuildAL1073WarningWorkaround.targets文件(名称无关紧要)并将其添加到项目中 . 它具有以下内容:
    <?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>
    
    • 编辑.csproj文件以在文件末尾附近导入此文件(您将在其中看到“修改构建过程...”的注释:
    <Import Project="MsBuildAL1073WarningWorkaround.targets" />
     <!-- To modify your build process... -->
    

相关问题