在覆盖 FileConfigurationProvider 时使用 System.IO.Stream 检测为不兼容的类型
Use of System.IO.Stream detected as an incompatible type when overriding FileConfigurationProvider
我正在尝试为 .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>
我也尝试在框架定义中更加明确...
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
<RuntimeFrameworkVersion>1.1.2</RuntimeFrameworkVersion>
</PropertyGroup>
JetBrains 错误跟踪器中存在错误 https://youtrack.jetbrains.com/issue/RSRP-464676
我正在尝试为 .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>
我也尝试在框架定义中更加明确...
<PropertyGroup>
<TargetFramework>netcoreapp1.1</TargetFramework>
<NetStandardImplicitPackageVersion>1.6.1</NetStandardImplicitPackageVersion>
<RuntimeFrameworkVersion>1.1.2</RuntimeFrameworkVersion>
</PropertyGroup>
JetBrains 错误跟踪器中存在错误 https://youtrack.jetbrains.com/issue/RSRP-464676