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

使用NuGet包时,能否优先选用PCL而非.NET Standard程序集?

解决.NET Framework 4.6.2项目优先引用NuGet包中PCL程序集的方法

我完全懂你的困扰——明明还没准备好切换到.NET Standard,更新NuGet包时却自动拉了.NET Standard 2.0的依赖,确实让人头疼。下面是几个实用方案,帮你强制NuGet优先选择PCL版本的程序集:

方案1:通过项目文件添加依赖约束

直接编辑项目文件,给NuGet明确指定优先解析的框架类型:

  • 右键项目 → 选择「编辑.csproj」
  • 在<PropertyGroup>节点内添加以下配置(把YourPackageId替换成你目标NuGet包的实际ID):
    <PackageTargetFallback>portable-net45+win8+wp8+wpa81;$(PackageTargetFallback)</PackageTargetFallback>
    
    这个配置会让NuGet优先匹配指定的PCL框架(这里用的是常见的PCL profile,你可以根据实际需要调整),而非默认选择.NET Standard 2.0。

方案2:明确指定PCL版本依赖

如果方案1不生效,可以尝试直接锁定PCL版本的依赖:

  • 打开项目的packages.config,找到目标包的条目,手动添加对应PCL版本的依赖子包(如果该包的PCL版本是独立子包的话)。
  • 或者在项目文件的<PackageReference>中明确限定目标框架:
    <PackageReference Include="YourPackageId" Version="[x.y.z]">
      <TargetFrameworks>portable-net45+win8+wp8+wpa81</TargetFrameworks>
    </PackageReference>
    

方案3:降级到未引入.NET Standard的包版本

如果该NuGet包是在新版本才开始支持.NET Standard 2.0,你可以暂时回退到仍以PCL为核心目标的旧版本:

  • 在NuGet包管理器中找到目标包,点击版本下拉框,选择一个发布时间较早、未切换到.NET Standard的版本安装。
  • 记得勾选「防止自动更新」,避免后续误操作升级回去。

额外提醒

  • 确保你的VS 2017安装了最新的.NET相关工具(虽然你不想用.NET Standard,但工具完整性会影响依赖解析逻辑)。
  • 如果你的类库本身就是PCL项目,它会自动优先匹配PCL依赖,重点调整桌面应用项目的配置即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 04:24:36