覆盖 FileConfigurationProvider 时使用 System.IO.Stream 检测为不兼容的类型

Posted

技术标签:

【中文标题】覆盖 FileConfigurationProvider 时使用 System.IO.Stream 检测为不兼容的类型【英文标题】:Use of System.IO.Stream detected as an incompatible type when overriding FileConfigurationProvider 【发布时间】:2017-10-19 23:09:28 【问题描述】:

我正在尝试为 .Net Core WebApi 应用程序中的某些配置元素创建自定义 FileConfigurationProvider 实现。

看起来像这样..

public class MyProvider : FileConfigurationProvider

    public MyProvider(FileConfigurationSource source) : base(source)  

    public override void Load(Stream stream)
    
        try
        
          // Stream reading things
        
        catch
        
            throw new Exception("Failed to load stream.");
        
    

尽管这个例子很简单,Load(Stream stream) 的覆盖在 VS2017 中给了我一个指标,即没有合适的覆盖方法。此外,还有一个错误提示指出FileConfigurationProvider(System.IO.Stream) is not implemented

使用 ReSharper 提取到委托后,显示了调用 Load(Stream stream) 的新提示,说明 Argument type System.IO.Stream [System.IO, Version=4.1.0.0...] is not assignable to parameter of type System.IO.Stream [System.Private.CoreLib, Version=4.0.0.0...]

尽管有这些错误提示,我仍然可以成功构建和运行此代码。

有人可以帮我理解这里出了什么问题吗?

csproj如下..

    <Project Sdk="Microsoft.NET.Sdk.Web">

  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
  </PropertyGroup>

  <ItemGroup>
    <Folder Include="wwwroot\" />
  </ItemGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.ApplicationInsights.AspNetCore" Version="2.0.0" />
    <PackageReference Include="Microsoft.AspNetCore" Version="1.1.2" />
    <PackageReference Include="Microsoft.AspNetCore.Mvc" Version="1.1.3" />
    <PackageReference Include="Microsoft.Extensions.Configuration" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="1.1.2" />
    <PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="1.1.2" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Tools" Version="1.0.1" />
  </ItemGroup>

</Project>

我也尝试在框架 defs 中更明确...

  <PropertyGroup>
    <TargetFramework>netcoreapp1.1</TargetFramework>
    <NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
    <RuntimeFrameworkVersion>1.1.2</RuntimeFrameworkVersion>
  </PropertyGroup>

【问题讨论】:

ReSharper 的哪个版本? @LasseV.Karlsen ReSharper Ultimate 2017.1.2 我对@9​​87654329@ 有同样的问题。看起来像 R# 中的错误。 【参考方案1】:

JetBrains 错误跟踪器 https://youtrack.jetbrains.com/issue/RSRP-464676 中存在错误

【讨论】:

以上是关于覆盖 FileConfigurationProvider 时使用 System.IO.Stream 检测为不兼容的类型的主要内容,如果未能解决你的问题,请参考以下文章

白盒测试法:逻辑覆盖与路径覆盖

代码覆盖率VS测试覆盖率

覆盖率啥意思

软件测试 白盒测试 语句覆盖 判定覆盖

07-白盒测试方法-逻辑覆盖法

代码覆盖率是个啥概念?