我正在开发netcoreapp2.0
控制台应用程序,我需要从.NET访问整个编码包。Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)不添加额外的编码提供者
我已经将的System.Text.Encoding.CodePages Version=4.4.0
Nuget包添加到我的项目中,并且几次清理/恢复了项目。
但是我不能得到我需要的额外编码。
以下代码:
Console.WriteLine(Encoding.GetEncodings().Length);
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
Console.WriteLine(Encoding.GetEncodings().Length);
回报:
8
8
和没有额外的编码被加到Encoding
类。
这些都是我的引用在我的项目:
<PackageReference Include="Microsoft.Extensions.Configuration" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.FileExtensions" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="2.0.0" />
<PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="2.0.0" />
<PackageReference Include="System.Data.HashFunction.xxHash" Version="2.0.0-ci-00012" />
<PackageReference Include="Nager.PublicSuffix" Version="1.1.0" />
<PackageReference Include="System.Text.Encoding.CodePages" Version="4.4.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="2.0.0" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="2.0.0" />
<DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="2.0.0" />
我在这里干什么什么了吗?
更新
再重新安装.NET核心SDK 2.0.2之后,事情开始正常工作,我可以用用Encoding.GetEncoding()
方法扩展编码代码页,但是Encoding.GetEncodings()
仍返回最初的8编码代码页。
是不是你的packages.config缺少对Microsoft.NETCore.Platforms 2.0的引用?它是该lib的依赖项。 –
就我在Visual Studio中看到的那样,它已经作为由我的项目中的设置的'Microsoft.NETCore.App' SDK的一部分加载@GabrielRainha不过我试着添加' ''''''''''''' –
添加您的更新作为答案。它可能有助于未来的人们。 –