修复错误(?)警告CA1416:此调用站点可在所有平台上访问

问题描述 投票:0回答:3

为什么我的代码会产生警告“CA1416:此调用站点在所有平台上均可访问。'...'仅在:'windows'上受支持?在调用的方法中,根本没有特定于 windows 的调用(事实上,只有简单的算术语句):

public static int Mod(this int k, int n) { return (k %= n) < 0 ? k + n : k; }

dividend.Mod(divisor)  //underlined with warning CA1416
c# .net cross-platform
3个回答
3
投票

我找到了问题的根本原因。以防万一其他人遇到它:在 .csproj 文件中,没有对 Windows 的引用;但是,该项目包含了 AssemblyInfo.cs。其中包含以下行:

[assembly: SupportedOSPlatform("windows")]

我认为这是因为一些不再需要的旧参考文献。


0
投票

我认为你应该检查你的项目的.csproj。 在本例中,有 2 个不同的项目,会出现警告消息。

解决方案:TargetFramework必须相同。

proj1.csproj
<PropertyGroup>
        <TargetFramework>net6.0-windows</TargetFramework>
</PropertyGroup>

proj2.csproj
    <PropertyGroup>
            <TargetFramework>net6.0</TargetFramework>
    </PropertyGroup>

目标框架必须相同


0
投票

我也遇到了这个问题。对我来说,我要做的就是添加一个

if
语句并检查操作系统是否为 Windows。我用这个做到了:
OperatingSystem.IsWindows()

示例:

 if (OperatingSystem.IsWindows()) { // error throwing code }

© www.soinside.com 2019 - 2024. All rights reserved.