6

何らかの理由で(我慢して)System.Text.Encoding名前空間のWinRTバージョンを使用する必要があります。アセンブリへの参照などを手動で追加できますが、それでもmscorlibの実装を使用します。そして、どうやらmscorlibを完全に削除することはできません。

プロジェクトでmscorlibの代わりにWinRTのSystem.Text.Encoding.dllを使用するように強制するにはどうすればよいですか?

基本的に、このILを生成するために必要です。

call class [System.Text.Encoding]System.Text.Encoding [System.Text.Encoding]System.Text.Encoding::get_UTF8()

これの代わりに:

call class [mscorlib]System.Text.Encoding [mscorlib]System.Text.Encoding::get_UTF8()
4

1 に答える 1

8

参照のエイリアスを作成する必要があります。これを行うには、ソリューションエクスプローラーに移動し、エイリアスを作成する参照を選択します。プロパティを表示し、[エイリアス]フィールドを編集して、一意のエイリアス名を追加します。

カスタムエイリアスmyaliasを持つプロパティのエイリアスフィールド

一意のエイリアスを定義したら、コードを編集してextern alias宣言を追加します。

extern alias myalias;

最後に、次のようにエイリアスを介してタイプを参照します(この例ではエイリアスされたSystem.dll)。

myalias::System.Diagnostics.Trace.WriteLine("I referenced this via my alias.");

これにより、他の参照でも同じ名前と名前空間の型が提供されている場合でも、必要な正確な参照がターゲットになります。

エイリアスの詳細については、アセンブリ参照のAliasesプロパティの用途に関するStackOverflowの回答を参照してください。

于 2012-09-20T15:54:11.640 に答える