我有带有本地化资源和x64本机依赖项的项目。有没有没有警告的方式构建它们?
如果将目标平台设置为AnyCPU,则由于本机引用,将收到此警告:
警告MSB3270:正在构建的项目“ MSIL”的处理器体系结构与引用“ Native64”,“ AMD64”的处理器体系结构之间不匹配。这种不匹配可能会导致运行时失败。请考虑通过Configuration Manager更改项目的目标处理器体系结构,以使项目和引用之间的处理器体系结构保持一致,或者依赖于具有与项目目标处理器体系结构相匹配的处理器体系结构的引用。
还可以,但是:
如果将目标平台设置为x64,则会收到此警告,因为本地化资源会自动创建具有错误目标体系结构的附属程序集:
ALINK:警告AL1073:引用的程序集“ mscorlib.dll”针对其他处理器
微软表示这是一个错误,但他们不会修复。
那么现在怎么办?
这是一种解决方法:
通过使用与您要构建的平台(或位数)相匹配的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... -->
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句