Visual Studio 和 msbuild 生成 .net 4 资源 dll 而不是 3.5

问题描述

如果您按照 Access resx resource files from another project 上的说明使用 resx 文件创建翻译,当项目为 .net 3.5 时,它不起作用并且似乎忽略了指定的区域性。

问题似乎与我的构建链有关。 我已经安装

  • .net 4.8
  • Windows SDK 10(我有这个 C:\Program Files (x86)\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools)
  • Visual Studio 2019

当我使用 jetbrain 的 dotpeek 检查输出 DLL 时,我看到卫星 DLL 是 .net 4.0

一位同事没有 .net 4.8 或 Windows SDK 10,他生成了卫星 DLL .net 3.5 他有 Windows SDK 7。

AFAIK 的问题在于输出这些 DLL 的 al.exe。

解决方法

问题确实出在 al.exe 上。 al.exe.config 中的配置指定它应该支持 dotnet 的 v4.0

<startup useLegacyV2RuntimeActivationPolicy="true">
    <supportedRuntime version="v4.0.30319"/>
</startup>

并将其更改为:

<startup>
    <supportedRuntime version="v2.0.50727"/>
</startup>

解决了。