2017-10-28 44 views
2

netcoreapp2.0コンソールアプリケーションを開発中で、.NETからのエンコードパッケージ全体にアクセスする必要があります。Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)は追加のエンコーディングプロバイダを追加しません

すでにNugetパッケージをthis pageからプロジェクトに追加して、プロジェクトを何回かクリーニング/復元しました。

しかし、私が必要とする余分なエンコーディングを得ることはできません。

次のコード

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エンコーディングを返し

更新

コードページ。

+0

packages.configにMicrosoft.NETCore.Platforms 2.0への参照がありませんか?これはlibの依存関係です。 –

+0

Visual Studioで見る限り、私のプロジェクト@GabrielRainhaで ''によって設定された 'Microsoft.NETCore.App' SDKの一部として既に読み込まれていますしかし、私は ''を追加しようとしましたが、残念ながらそれは役に立たなかった。 –

+0

アップデートを回答として追加してください。将来の人々を助けるかもしれない。 –

答えて

1

ガブリエルの提案に関する回答として、これは将来的に他の人にも役立つかもしれないとの回答として追加しています。

".NET Core SDK 2.0.2"のインストールを修復し、 "ソリューションとプロジェクトのクリーンアップ"を行い、プロジェクトを再構築し、Encoding.RegisterProvider(CodePagesEncodingProvider.Instance)コードがうまく動作し始めました。

Encoding.GetEncoding()メソッドを使用して余分なコードページにアクセスできるようになりましたが、余分なエンコードを追加した後でもEncoding.GetEncodings()メソッドから同じエンコードのリストを取得できます。

私の見解では、Encoding.GetEncodings()メソッドは、利用可能なすべてのエンコードを返す必要があります。

関連する問題