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

如何在.NetStandard2.0项目中定向Windows平台获取对应运行时依赖

解决方法

出现这个问题的核心原因是:.NET Standard作为跨平台标准,默认拷贝的是NuGet包ref目录下的引用程序集,只包含接口定义没有Windows平台的具体实现,所以运行时会触发平台不支持的异常。

你可以通过以下配置让构建自动输出Windows平台的实现程序集:

  • 首先确认你已经在项目中安装了System.Security.Cryptography.ProtectedData NuGet包
  • 修改项目文件,添加目标运行时标识配置,修改后的完整配置参考如下:
<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
    <!-- 指定目标运行时为Windows,可根据需求替换为win-x86、win-x64等具体架构 -->
    <RuntimeIdentifier>win</RuntimeIdentifier>
    <!-- 如果需要同时适配多个运行时,可使用复数形式配置:
    <RuntimeIdentifiers>win-x86;win-x64</RuntimeIdentifiers>
    -->
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="System.Security.Cryptography.ProtectedData" Version="8.0.0" />
    <!-- 此处版本号可根据你的项目需求调整 -->
  </ItemGroup>
</Project>

配置完成后重新构建,输出目录下的System.Security.Cryptography.ProtectedData.dll就是Windows平台的实现版本,可直接用于InstallShield打包,不会再抛出平台不支持的异常。如果需要打包不同架构的版本,构建时指定对应的RuntimeIdentifier参数即可获取对应架构的程序集。


内容的提问来源于stack exchange,提问作者Hintz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 22:24:05