标记 .NET 5.0 EXE 以避免关于版本相关 API 的警告

Marking .NET 5.0 EXE to avoid warings about version dependent APIs

我正在更新包含 DLL 和 EXE 的 .NET Framework 解决方案中的项目以面向 .NET 5.0。来自接触 DLL 的 EXE 的每个调用都标有警告:

Warning CA1416  'MyDllClass.MyProperty<int>(ref int, int, string)' is supported on 'Windows' 7.0 and later

suggested actions from Microsoft 基本上等于在每次调用时都增加了麻烦,或者只是放弃并抑制了警告。从逻辑上讲,我希望能够标记我的 EXE 以声明它的目标是 Windows 7.0 或更高版本,这样如果有人试图在其他地方 运行 它会给出一个异常,但编译器可以假设这是所有 API 调用的基准。我尝试了两件事,但都没有帮助:

尝试 1

<SupportedOSPlatformVersion>7.0</SupportedOSPlatformVersion>

尝试 2

<TargetFramework>net5.0-windows7.0</TargetFramework>

解决这种情况的优雅方法是什么?我控制这两个项目的事实似乎是最好的情况。

来自 EXE 项目:

    <OutputType>WinExe</OutputType>
    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>

来自 DLL 项目:

    <TargetFramework>net5.0-windows</TargetFramework>
    <UseWPF>true</UseWPF>

感谢 ,我尝试从我的 EXE 项目中删除它:

<GenerateAssemblyInfo>false</GenerateAssemblyInfo>

由于自动生成的字段与其中定义的字段冲突,我还必须删除 AssemblyInfo.cs。在那之后,一切都很好,没有警告。我假设编译器正在生成它需要的任何字段来保持自己的快乐。

我也猜想这不会成为未开发项目的问题,我只是在迁移应用程序的过程中才在某个地方结束了那个元素。