c# - CA1416。如何告诉 builder 唯一的平台是 Windows?
问题描述
dotnet run
(在 Windows 上)原因
warning CA1416: This call site is reachable on all platforms. 'WellKnownSidType.WorldSid' is only supported on: 'windows'.
我的程序设计为仅在 Windows 上运行。
我试图添加SupportedPlatform
到MyApp.csproj
,但没有运气。
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Authentication.Negotiate" Version="5.0.5" />
<PackageReference Include="System.DirectoryServices" Version="5.0.0" />
<SupportedPlatform Include="Windows"/>
</ItemGroup>
</Project>
我究竟做错了什么?我怎样才能证明dotnet run
这个项目是仅限 Windows 的?
解决方案
System.Runtime.Versioning.SupportedOSPlatformAttribute
您可以使用例如标记每个特定于 Windows 的方法
[SupportedOSPlatform("windows")]
public static void Foo()
=> Thread.CurrentThread.SetApartmentState(ApartmentState.STA);
在 AssemblyInfo 中标记整个程序集(如果有的话)
[assembly: System.Runtime.Versioning.SupportedOSPlatformAttribute("windows")]
或编辑.csproj
文件以针对特定于 Windows 的 dotnet 版本,以使这些更改自动进行
<TargetFramework>net5.0-windows</TargetFramework>
推荐阅读
- ruby-on-rails - Rails + 乘客 + Nginx 404 未找到
- jmeter - 如何发送仅包含摘要报告侦听器的总计列的邮件
- css - 具有不等高和不等宽列的 CSS 网格
- php - OIDC - 我应该什么时候获得 id_token?
- scala - 从地图创建矩阵的最有效方法
- spring-cloud - SpringCloud 读取超时
- php - 使用 PHP 的 HTML SQL 服务器连接
- javascript - 滚动时将元素悬停在鼠标光标下方
- gradle - Gradle 根项目依赖于子项目构建
- javascript - vue 和 firebase TypeError:无法读取未定义的属性“组”