You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET MAUI MacCatalyst添加Entitlements.plist后PCSC无法访问智能卡资源管理器的问题

.NET MAUI MacCatalyst添加Entitlements.plist后PCSC无法访问智能卡资源管理器的问题

我之前也碰到过一模一样的问题,这本质上是Mac App Sandbox的权限限制在搞事情——当你开启沙箱模式后,应用默认会被限制访问系统级的智能卡服务,必须在Entitlements.plist里显式声明对应的权限才能正常使用PCSC库。

问题根源

未添加Entitlements.plist时,你的应用处于无沙箱模式,拥有完整的系统访问权限,所以能顺利调用智能卡资源管理器。但一旦开启沙箱(通过com.apple.security.app-sandbox设为true),苹果的安全机制会封锁所有未明确授权的系统资源访问,包括PCSC服务。

解决步骤

  1. 修改Entitlements.plist,添加智能卡访问权限
    在现有的plist内容里,新增com.apple.security.smartcard权限键,设置为true。修改后的完整内容如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
    <plist version="1.0">
    <dict>
        <key>com.apple.security.app-sandbox</key>
        <true/>
        <key>com.apple.security.network.client</key>
        <true/>
        <!-- 新增:允许访问智能卡服务 -->
        <key>com.apple.security.smartcard</key>
        <true/>
    </dict>
    </plist>
    
  2. 确认项目正确关联Entitlements文件
    右键你的MacCatalyst项目 → 选择「属性」→ 切换到「生成」标签页 → 在MacCatalyst区域,确保「代码签名授权」选项指向你刚才修改的Entitlements.plist文件路径。如果没自动识别,也可以直接在项目的.csproj文件里添加以下配置(针对net7.0-maccatalyst目标框架):

    <PropertyGroup Condition="'$(TargetFramework)' == 'net7.0-maccatalyst'">
      <CodeSignEntitlements>Platforms/MacCatalyst/Entitlements.plist</CodeSignEntitlements>
    </PropertyGroup>
    
  3. 重新构建并测试
    清理项目后重新构建,运行应用再点击按钮,应该就能正常读取读卡器信息了。

关于“添加其他参数无法启动应用”的补充

如果添加其他权限后应用无法启动,大概率是权限配置不符合苹果的要求:

  • 某些权限需要在Info.plist里补充对应的使用描述(比如相机、位置权限);
  • 部分权限是互斥的,或者需要额外的开发者账号权限;
  • 建议每次只添加一个新权限,测试通过后再添加下一个,这样能快速定位问题所在。

备注:内容来源于stack exchange,提问作者Nimerya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:28:06