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

Visual Studio 2017无法在.NET Standard类库中加载.NET Framework引用怎么办?

解决.NET Standard多目标类库中框架引用警告及构建失败问题

我来帮你搞定这个头疼的引用问题,这个场景我之前也踩过坑,核心原因很明确:System.Runtime.Caching是.NET Framework专属的程序集,.NET Standard 2.0根本不包含它,你直接全局引用的话,会导致.NET Standard目标下找不到这个库,进而出现警告和构建失败。

下面给你几个具体的解决步骤:

1. 给引用加上目标框架条件

你需要修改.csproj文件,把System.Runtime.Caching的引用限制在net461目标下,这样.NET Standard目标就不会去加载它了。修改后的项目文件如下:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <TargetFrameworks>net461;netstandard2.0</TargetFrameworks>
  </PropertyGroup>
  <ItemGroup>
    <Compile Remove="Utility\EncryptionUtility.cs" />
  </ItemGroup>
  <ItemGroup>
    <Folder Include="Utility\" />
  </ItemGroup>
  <!-- 只在net461目标框架下引用这个程序集 -->
  <ItemGroup Condition="'$(TargetFramework)' == 'net461'">
    <Reference Include="System.Runtime.Caching" />
  </ItemGroup>
</Project>

2. 处理.NET Standard下的缓存需求(如果有)

如果你的类库在.NET Standard环境下也需要缓存功能,千万别硬用.NET Framework的程序集,换用跨平台的替代方案:

  • 安装NuGet包Microsoft.Extensions.Caching.Memory,这是官方支持的跨平台缓存库,完美兼容.NET Standard 2.0
  • 要是你需要同时兼容两种环境的代码,可以用条件编译区分:
    #if NET461
        // .NET Framework环境下用System.Runtime.Caching
        var cache = System.Runtime.Caching.MemoryCache.Default;
    #else
        // .NET Standard环境下用跨平台缓存库
        var cache = new Microsoft.Extensions.Caching.Memory.MemoryCache(new Microsoft.Extensions.Caching.Memory.MemoryCacheOptions());
    #endif
    

3. 清理重建项目

改完配置后,记得做这几步确保生效:

  • 右键项目选择「清理」
  • 接着选择「重新生成」
  • 要是还是有问题,直接删掉项目目录下的bin和obj文件夹,再重新构建一次,这招通常能解决很多缓存类的问题

这样操作后,黄色警告应该就会消失,项目也能正常构建了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 08:33:20