为什么我的代码会产生警告“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
我找到了问题的根本原因。以防万一其他人遇到它:在 .csproj 文件中,没有对 Windows 的引用;但是,该项目包含了 AssemblyInfo.cs。其中包含以下行:
[assembly: SupportedOSPlatform("windows")]
我认为这是因为一些不再需要的旧参考文献。
我认为你应该检查你的项目的.csproj。 在本例中,有 2 个不同的项目,会出现警告消息。
解决方案:TargetFramework必须相同。
proj1.csproj
<PropertyGroup>
<TargetFramework>net6.0-windows</TargetFramework>
</PropertyGroup>
proj2.csproj
<PropertyGroup>
<TargetFramework>net6.0</TargetFramework>
</PropertyGroup>
目标框架必须相同
我也遇到了这个问题。对我来说,我要做的就是添加一个
if
语句并检查操作系统是否为 Windows。我用这个做到了:OperatingSystem.IsWindows()
示例:
if (OperatingSystem.IsWindows()) { // error throwing code }