La compilación puede producir un error al implementar el componente con una propiedad de tipo System.Text.Encoding en el formulario

Este artículo le ayuda a resolver un problema en el que se produce un error en la compilación al implementar el componente con una propiedad de tipo System.Text.Encoding en el formulario.

Versión del producto original:   .NET Framework 4.5
Número KB original:   2956445

Síntomas

En Microsoft Visual Studio de desarrollo donde .NET Framework 4.5 está instalado, la compilación puede producir un error al implementar el componente con una propiedad de tipo System.Text.Encoding en el formulario.

Puede ocurrir cuando Visual Studio 2010 o Visual Studio 2012 se ejecuta en el entorno con .NET Framework 4.5 instalado.

No se produce en el entorno con .NET Framework 4.5.1 instalado o cuando Visual Studio 2013 se está ejecutando.

Un ejemplo del mensaje de error es:

Archivo ResX no válido. El tipo de datos en la línea 138, posición 5, no se puede cargar porque se produjo la siguiente excepción durante la construcción: no hay datos disponibles para la codificación 932.

Causa

Se debe a que se produjo un error durante la deserialización de la propiedad de tipo del archivo de recursos System.Text.Encoding como objetos en el proceso de compilación.

Cuando se produce este error, se producirá un error en la compilación porque el objeto no se pudo cargar en el Windows de formularios.

Estado

Microsoft ha confirmado que se trata de un error. Este problema se corrigió en .NET Framework 4.5 para Windows 8 y Windows Server 2012.

Solución

Cuando use Windows 8 y Windows Server 2012, póngase en contacto con los Servicios de soporte al cliente de Microsoft en el siguiente artículo de Knowledge Base para obtener la revisión de Framework 4.5 para Windows 8 y Windows Server 2012:
El paquete acumulativo 2848799 revisiones está disponible para la .NET Framework 4.5 en Windows 8 y Windows Server 2012 (2848799)

Cuando no use Windows 8 y Windows Server 2012, instale .NET Framework 4.5.1.

.NET Framework 4.5.1 tiene paquetes de idioma. Instale el paquete de idioma correspondiente según corresponda.

Pasos para reproducir el comportamiento

  1. Cree una nueva aplicación Windows formulario.

  2. Agregue un control de usuario ( UserControl1 ) al proyecto.

  3. Reemplace el código de la clase de control de usuario por el siguiente código:

    public UserControl1()
    {
        InitializeComponent();
        Encoding = Encoding.GetEncoding(932);
    }
    public Encoding Encoding { get; set; }
    
  4. Compile la solución.

  5. En el cuadro de herramientas de la vista Diseño del formulario, haga doble clic en el control descrito anteriormente para colocarlo en el formulario.

  6. Recompilar la solución.