CSC: error CS7038: No se pudo emitir el módulo


Después de instalar Visual Studio 2015 y construir mi proyecto, recibo el error

"CSC: error CS7038: Error al emitir el módulo".

Sin embargo, mi solución está funcionando bien en Visual Studio 2013.

Es un ASP.NET webforms project. NET 4.0

¿Alguien?

UPDATE: parece que el problema tiene que ver con el ensamblaje inteligente de Red Gate en combinación con parámetros de método con valores predeterminados.

ACTUALIZACIÓN: Smart Assembly 6.9 corrige el error por mí.

Author: MickyD, 2015-07-29

17 answers

Tiene el mismo error (instalación nueva de la empresa VS2015, ASP.NET webforms project. NET 4.0).

Después de algunas investigaciones, he encontrado que hay dos DLL en las referencias que causan esto. Ambos son ensamblados. Net 2.0 y ambos están ofuscados por Red Gate Smart Assembly 6.5 . Y la verdadera razón es... ofuscación.

Afortunadamente, estos ensamblajes son míos, por lo que he tratado de construirlos sin usar Ensamblajes inteligentes: el error es ido.

Interesante es que no hay errores o advertencias mostradas por Visual Studio antes de intentar construir un proyecto.

¡Buena suerte!

EDITAR : Se ha corregido un problema al actualizar Smart Assembly a la versión 6.9.

 7
Author: Andrey Ivashov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-02 22:29:50

Fragmento original:

    private void radButton1_Click(object sender, EventArgs e)
    {
        string perp = radTextBox1.Text;

        int i = 0;
        DataRow arp = ale.Rows[i];
        while (i <= ale.Rows.Count)
        {
            if (ale.Rows[i].Field<>("FullName") = perp)
            {
                arp = ale.Rows[i];
                ale.Rows.Remove(arp);
            }

        }

        i = ale.Rows.Count;
        radLabel1.Text = i.ToString();
    }

Cambió esto:

    if (ale.Rows[i].Field<>("FullName") = perp)

A Esto:

    if (ale.Rows[i].Field<String>("FullName") == perp)
 12
Author: Scooter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-04 16:10:27

Como @Andrey informó, esto parece ser un problema con ensamblajes ofuscados que está causando algunas dificultades para Roslyn. Hoy pude obtener una reproducción en vivo de este error y la causa raíz parece ser que el ofuscador invalida / corrompe cómo se almacenan los valores predeterminados de los parámetros en los metadatos. Cuando se ejecuta a través de ildasm, los valores predeterminados se mostrarán como:

.param [3] /* Invalid default value for 0800001F: */

La versión anterior del compilador manejó este escenario tratando el valor no válido como null o default(T). Arreglaremos a Roslyn para que tenga el mismo comportamiento.

 6
Author: JaredPar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-05 18:10:56

También tuve esta excepción siendo lanzada en VB.NET (Visual Studio 2015-Pro), y aisló una sola línea que estaba causando el error.

En la línea de código siguiente, si define model como un entero, como en:

Dim model as Integer = 2

Y luego use:

Const N As Integer = model

Lanzarás la excepción.

Sin embargo, cuando modifiqué esto a:

Dim N As Integer = model

La excepción no fue lanzada. La sintaxis Const era código heredado de otro programa al que agregué rápidamente el modelo, y constantes no se puede establecer en tipos enteros predefinidos.

 5
Author: wrtsvkrfm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-13 03:53:36

Extendiendo la respuesta de @jony-adamit :

También tuve este error de compilación lanzado en C# (Visual Studio 2015). Se redujo a las diferencias en la salida del compilador de.NET 4.5 y Roslyn el nuevo compilador en VS2015. Puede tomar el siguiente código y ejecutarlo usted mismo o usar dotnetfiddle (https://dotnetfiddle.net/fa2rMs ) y cambiar entre compiladores.

En el compilador. NET 4.5 (compilador C# versión 12.0 o anterior) se obtiene este mensaje:

Error de compilación (línea 16, col 7) : El tipo o nombre del espacio de nombres 'Select' no existe en las herramientas del espacio de nombres.Armas ' (¿eres tú falta una referencia de montaje?)

En las versiones del compilador Roslyn 1.0.0 y 1.1.0 se obtiene este mensaje:

Error de compilación (línea 1, col 1): No se pudo emitir el módulo 'MyAssembly'.


Código para reproducir el error (observe el espacio de nombres):

public class Program
{   
    public static void Main()
    {
        Tools.Delegater.Work();
    }
}

namespace Tools 
{
    public static class Delegater
    {   
        public static System.Action Work = () => 
        {
            var query = from x in Weapons
                        select x;
        };
    }
}

namespace Tools.Weapons
{
    public class Cannon { }
}

Como puede ver en el compilador mensajes, el mensaje de Roslyn te deja adivinando en cuanto al qué y el dónde sobre el error del compilador. Y dependiendo del tamaño de la aplicación, la falta de detalles, podría tomar días o semanas para descubrir la causa raíz. Mientras que el mensaje en el compilador anterior le apuntaba al punto exacto para comenzar a revisar su código.

Otra gran diferencia es que el compilador anterior le mostrará un error de sintaxis en Visual Studio para este escenario, pero desafortunadamente Roslyn (atm) no lo hace. Sin embargo, si supiera dónde buscar y colocara el mouse sobre la variable 'x' en la instrucción linq to sql, entonces vería que Rosyln no entiende cómo interpretarla.

 3
Author: ntieszen.pro,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-07-15 21:22:13

Estaba recibiendo un error similar: "BC36970. No se pudo emitir algo del módulo.dll'." Me doy cuenta de que el código de error no es el mismo, pero también es un problema de tipo "fallo al emitir", así que pensé en compartir mi respuesta.

Problema: Mi problema era que tenía una cadena que era una constante pero estaba tratando de agregarle otra cadena, así (usando código VB):

Dim MyString1 As String = "Test1"
Const MyString2 As String = "Test2" & MyString1

Solución: Simplemente tuve que convertir la segunda cadena de Const a Dim y el error desapareció:

Dim MyString1 As String = "Test1"
Dim MyString2 As String = "Test2" & MyString1
 3
Author: Hank Scorpio,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-18 22:15:54

Acabo de tener "Fallo al emitir el módulo". Por error pongo corchetes vacíos en una llamada a un método de extensión genérico, solo cuando está dentro de un operador ternario, como este:

Var a = b == 6 ? 8: x. Foo();

(Fuera de un op ternario, solo obtengo un error normal CS7003: Uso inesperado de un nombre genérico no unido.)

 2
Author: Eldritch Conundrum,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-23 13:09:32

Obtengo el mismo error "No se pudo emitir el módulo" con este código, pero cambiar el "Const " a" Dim " resuelve el problema:

Dim userStatus1 As String = convAttrSet("user_status")
Dim userStatus2 As String = convAttrSet("user_status")
Const PENDING As Boolean = (userStatus1 = userStatus2)
 1
Author: energyplay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-09-22 03:41:53

Hay otro error que puede causar este error exacto:

Me sucedió después de cambiar el nombre de una propiedad sin refactorizar, lo que provocó que algún código linq llamara al espacio de nombres en sí mismo!

Para ver el error en acción todo lo que tienes que hacer es ejecutar este fragmento de código:

public static int Test()
{
    var x = from c in ConsoleApplication5
        select 3;

    return x.First();
}

Donde ConsoleApplication5 es el espacio de nombres!
Esto solo sucede en VS2015.

Actualización:
Hay un problema para esto ahora en GitHub si cualquiera está interesado.

 1
Author: Jony Adamit,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-10-31 11:33:47

Recibí este error cuando estaba trabajando con la tabla de datos y no proporcioné un tipo de datos donde se requería:

bool temp = dtTab.AsEnumerable().Any(row => row.Field<>("active") == 1);

Dándole un tipo de datos adecuado se deshizo del error. También tuve que convertirlo en cadena para poder compararlo correctamente-

bool temp = dtTab.AsEnumerable().Any(row => row.Field<Boolean>("active").toString() == "1");
 1
Author: Pallavi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-07 20:20:59

Esta respuesta es similar a la publicada por @wrtsvkrfm

  'Dim NEWLINE As String = "<BR/>"
   Dim NEWLINE As String = vbCrLf

 Const HT_QTC_VENDOR As String = "<B>some stuff {0}</B>" & NEWLINE

Esto hará que la DLL no se emita,

Cambie las 2 primeras líneas a

  'Const NEWLINE As String = "<BR/>"
   Const NEWLINE As String = vbCrLf

Y el error desaparece. Esto debería ser un error de compilación. Una CONST claramente no puede depender de una variable, que puede..., bien..., variar. :-)

 1
Author: greg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-16 21:41:17

Obtuve este error al usar un método genérico pero no pude incluir el tipo.

Este código dio el error:

example.GetValue<>(foo);

La corrección simplemente era especificar el tipo:

example.GetValue<string>(foo);

No estoy seguro de si el ejemplo de erroring es una sintaxis válida o no: hubiera esperado un error de sintaxis si no lo es en lugar de este error, e Intellisense aceptó la sintaxis.

 1
Author: Hutch,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-02 18:21:38

Tengo este error también, parece que hay algunas razones principales que causan este error.

He publicado esta respuesta para concluir las soluciones mencionadas y ayudar a otros chicos para que puedan resolver este error rápidamente

Por favor, lea todas las respuestas aquí en esta página cuidadosamente, estoy seguro de que puede resolver el problema utilizando una de las soluciones mencionadas, buena suerte :)

 0
Author: Mehdi Dehghani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 12:25:36

Obtuve este error al usar linq a entidades y mi consulta linq tuvo un error de sintaxis en la cláusula join

 0
Author: Jay Jay Jay,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-07 22:39:58

Para mí el problema ocurrió después de agregar un paso postbuild que cambia el assemblyinfo.cs (NetRevisionTool.exe). Tenga cuidado de no cambiar el AssemblyInfo.cs entre la construcción y Editar y continuar.

 0
Author: codingdave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-12-05 16:57:14

También tuve esta excepción siendo lanzada en VB.NET (Visual Studio 2015-Pro), y aisló una sola línea que estaba causando el error

     Faulty....
    Dim i As Short
    Dim j As Short = BancoCombienElement(LaChaine)
    Const a  = (22 / 60) * j
    Dim TiTxt As String = ""
    Dim S_8_10_12_14 As String = ""

    Work good!!!!!!!!
    Dim i As Short
    Dim j As Short = BancoCombienElement(LaChaine)
    Dim a As Short = (22 / 60) * j
    Dim TiTxt As String = ""
    Dim S_8_10_12_14 As String = ""
 0
Author: guest,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-04-08 21:01:17

Razón: Este error parece ser introducido cuando tenemos algo extraño en nuestro código. Para mí cometí un error al obtener el usuario actual de identidad.

Código de error: int currentUserId = Usuario.Identidad.GetUserId();

Código Fijo: Especifique el tipo de datos después de GetUserID();En este caso he especificado int.

Nota Por favor, intente deshacer su código paso a paso para que pueda encontrar este problema. Pero por lo demás fue muy difícil para mí rastrear ese error.

Gracias

 0
Author: yuvaraj prabhu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-27 13:14:54