我正在使用 VS2019 和 .NET CORE 2.2 我收到警告 AL1073
ALINK 警告 AL1073:引用的程序集“mscorlib.dll”针对不同的处理器
我知道这与问题很接近:ALINK:警告 AL1073:引用的程序集“mscorlib.dll”针对不同的处理器
但:
我使用的是 .NET CORE 2.2 而不是 4.x
那里提出的解决方案不适用于 .NET 核心
特别是,尝试添加:
<PropertyGroup>
<TargetFrameworkSDKToolsDirectory Condition=" '$(PlatformTarget)' == 'x64'">$(TargetFrameworkSDKToolsDirectory)\$(PlatformTarget)\
</TargetFrameworkSDKToolsDirectory>
</PropertyGroup>
发出另一个警告
警告 MSB3084 任务试图在两个位置找到“al.exe”。1) 在基于 SdkToolsPath 生成的“\x64\”处理器特定目录下 2) 由 SDKToolsPath 属性指定的“\x64\”下的 x86 特定目录。您可以通过执行以下操作之一来解决该问题: 1) 将“SDKToolsPath”属性设置为 Microsoft Windows SDK 的位置。C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\Microsoft.Common.CurrentVersion.targets
真的很奇怪,因为根据警告的位置是一样的!
另外:我很乐意抑制构建设置中的警告,因为我所有的单元测试都通过了,但是将 1073 添加到列表中对仍然出现的 AL1073 警告没有影响。
或者,警告建议:将“SDKToolsPath”属性设置为 Microsoft Windows SDK 的位置,我该怎么做?
更新回答评论:这很难在简单的设置中重现。该项目特别引用了几个 Github 项目(fo-dicom)。fo-dicom 库使用为 32 和 64 平台构建的映像库。我确实尝试设置为 64 位,但没有帮助。我看到其他人在 VS 社区中提出了抑制警告似乎有问题的错误:https ://developercommunity.visualstudio.com/content/problem/224196/suppress-warnings-from-project-settings-build-does.html 。该问题已关闭,没有后续行动,MSFT 表示不会修复 AL 1073,但我想禁用!使用持续集成时不会出现警告...
我现在正在尝试重新编译 .NET CORE 3.0 中的所有内容,如果可行,将提供更新。
更新: 在 .NET CORE 3.0 中重新编译后,我仍然遇到问题。
我还发现了这个问题的另一个原因(在其他 SO 文章中提到,但对于 .NET 4.x。确实,我看到资源文件也出现了这个问题,但是对于 .NET Core,我们看不到“生成卫星程序集”消息,因此很难将编译器警告链接到资源文件的生成。
为了解决这个问题,我将 al.exe 文件从 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\x64 复制到我的解决方案到 Tools64 中,并将以下内容添加到我的.csproj
<PropertyGroup>
<TargetFrameworkSDKToolsDirectory>..\Tools64</TargetFrameworkSDKToolsDirectory>
</PropertyGroup>
将 SDKToolsDirectory 直接设置到原始位置不起作用。在我使用 devops 构建服务器进行持续集成的情况下,不会额外使用绝对路径(路径可能不同)。在本地复制 al.exe 工具似乎是一个可以接受的解决方案。