如何在 .NetStandard2.0 项目中定位 Windows?

How to target Windows in .NetStandard2.0 project?

我想构建一个 .Net Standard 2.0 程序集,将 Windows 版本的依赖项复制到 bin 输出文件夹中。这样做允许 InstallShield 构建以轻松找到正确的程序集进行安装。

为此,我设置了目标框架并添加了 CopyLocalLockFileAssemblies。具体来说,我想要 System.Security.Cryptography.ProtectedData.dll 的 Windows 版本。我得到的是抛出异常“System.PlatformNotSupportedException: Windows Data Protection API (DPAPI) 在此平台上不受支持的程序集版本。”

从 NuGet 缓存的“运行时”文件夹中手动挖掘出正确的程序集并将其复制到位可以实现正确的操作。请说明为 Windows 平台获取 NuGet 运行时的正确方法。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFramework>netstandard2.0</TargetFramework>
    <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies>
  </PropertyGroup>

答案是在项目中设置RuntimeIdentifier