System.Text.Encoding 型のプロパティを持つコンポーネントをフォームに配置するとビルドに失敗する。

現象
.NET Framework 4.5 がインストールされた Visual Studio 開発環境において、System.Text.Encoding 型のプロパティを持つコンポーネントをフォームに配置すると、ビルドに失敗することがあります。
この現象は、.NET Framework 4.5 がインストールされている環境で Visual Studio 2010 または Visual Studio 2012 を使用する場合に発生します。
.NET Framework 4.5.1 がインストールされている環境や、Visual Studio 2013 を使用する場合には発生しません。

発生するエラーのメッセージの一例を以下に示します。

"ResX ファイルが無効です。行 138、位置 5 上のデータの型は、作成中に次の例外をスローしたため読み込めません: エンコード 932 に対して利用可能なデータはありません。"

原因
ビルド プロセスにおいて、リソースファイルから System.Text.Encoding 型のプロパティをオブジェクトとして逆シリアル化する過程で、エラーが発生したことが原因です。
このエラーが発生すると、Windows フォーム デザイナーがオブジェクトを読み込むことができないため、ビルドに失敗します。


状況
マイクロソフトでは、この問題をこの資料の対象製品として記載されているマイクロソフト製品の問題として認識しています。

この問題は、Windows 8 と Windows Server 2012 用の .NET Framework 4.5 で修正済みです。


解決方法
Windows 8 または Windows Server 2012 を使用している場合は、次のサポート技術情報から Microsoft カスタマー サポート サービスにお問い合わせいただき、Windows 8 と Windows Server 2012 用の .NET Framework 4.5 の修正プログラムを入手します。



Windows 8 または Windows Server 2012 を使用していない場合は、.NET Framework 4.5.1 をインストールします。




.NET Framework 4.5.1 には言語パックも用意されていますので、必要に応じてインストールします。



詳細
再現手順
  1. Windows フォーム アプリケーションを新規作成します。
  2. プロジェクトにユーザー コントロール (UserControl1 とします) を追加します。
  3. ユーザー コントロール クラスのコードを以下で置き換えます。

    public UserControl1(){    InitializeComponent();    Encoding = Encoding.GetEncoding(932);}public Encoding Encoding { get; set; }
  4. ソリューションをビルドします。
  5. フォームのデザイン ビューでツールボックスから上記コントロールをダブルクリックし、フォーム上に配置します。
  6. ソリューションを再ビルドします。
注意 : これは、マイクロソフトのサポート組織内で直接作成された "緊急公開" の資料です。 この資料には、確認中の問題に関する現状ベースの情報が記載されています。 情報提供のスピードを優先するため、資料には誤植が含まれる可能性があり、予告なしに随時改定される場合があります。 その他の考慮事項については、使用条件を参照してください。
Eigenschappen

Artikel-id: 2956445 - Laatst bijgewerkt: 09/29/2016 15:42:00 - Revisie: 3.0

Microsoft .NET Framework 4.5

  • kbbug kbfix kbexpertiseinter kbexpertiseadvanced KB2956445
Feedback