2010-03-30 14 views
6

Tengo un proyecto de aplicación web ASP.NET que hace referencia a otro proyecto llamado ModusCore (o Modus.Core). Hemos tenido una variedad de controles que usan ModusCore hasta ahora sin ningún problema, pero hay uno que he creado últimamente que ha estado causando problemas. Aquí está el código:Error en la generación del archivo de diseñador: no se pudo cargar el archivo o el ensamblaje

public class PortalLinkNew : WebControl 
{ 
    public string Text { get; set; } 
    public bool AllowPush { get; set; } 

    public PortalLinkNew() 
    { 
     AllowPush = true; 
    } 

    public IChannelRequest ChannelRequest { get; set; } 

    protected override HtmlTextWriterTag TagKey 
    { 
     get { return HtmlTextWriterTag.A; } 
    } 

    protected override void AddAttributesToRender(HtmlTextWriter writer) 
    { 
     try 
     { 
      base.AddAttributesToRender(writer); 
      if (DesignMode || Page == null || !(Page is IPortalPage)) 
      { 
       return; 
      } 
      string href = "/"; 
      if (ChannelRequest != null) 
      { 
       var portalPage = (IPortalPage)Page; 
       href = portalPage.Module.PortalRouter.GetLinkUrl(portalPage, ChannelRequest, AllowPush); 
      } 
      writer.AddAttribute(HtmlTextWriterAttribute.Href, href); 
     } 
     catch (Exception) 
     { 

     } 
    } 

    public override void RenderEndTag(HtmlTextWriter writer) 
    { 
     writer.Write(Text); 
     base.RenderEndTag(writer); 
    } 
} 

En el código anterior, IPortalPage y IChannelRequest se definen las interfaces en Modus.Core.

Mi intención es utilizar este control en mi código de la siguiente manera:

<tnl:PortalLinkNew ID="CancelButton" runat="server" Text="Cancel" OnInit="CancelButton_Init" /> 

En realidad, esto se compila y se ejecuta sin ningún problema, pero cuando estoy editando la página (ver fuente) en Visual Studio 2008, me da la siguiente advertencia:

Generación de archivo del diseñador falló: no se pudo cargar el archivo o ensamblado 'Modus.Core, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = null' o uno de sus dependencias. El sistema no puede encontrar el archivo especificado.

Como se dice, que no se regenera el archivo de diseño, es decir, cualquier intento de hacer referencia al control CancelButton de código subyacente se traduce en un error de compilación. Siguiendo los consejos que he encontrado en línea, he intentado eliminar el archivo .ascx.designer.cs correspondiente y usar "Convertir a aplicación web" en esa página, pero me dice que no puede reconstruir el archivo del diseñador por la misma razón mencionada. encima.

He intentado todo lo que puedo pensar: limpiar la solución, reiniciar Visual Studio, reiniciar mi computadora, eliminar el directorio de código y extraerlo del repositorio, eliminar y volver a agregar las referencias de proyecto y dll, etc. El mismo problema ocurre en varias computadoras que uso.

¿Cómo puedo hacer que el diseñador VS deje de reprobar?

Respuesta

18

Tengo un problema muy similar (que no he podido resolver todavía). Sin embargo, la aplicación con la que tengo el problema se convirtió a partir de un "Proyecto de sitio web" y no puedo deshacerme de la sensación de que esto tiene algo que ver con eso. Y estoy en VS 2005.

Ahora lo que puedo añadir es que

a) "a veces" (no he podido averiguar en qué momento todavía) la "Convertir a la Aplicación Web" -trick funciona para mí (pero no siempre)

b) "a veces" (igual al anterior) que ayuda a cambiar a la vista del diseñador, cambiar algo y guardar -> * .designer.cs obtiene regenerado

Por lo general tratan varias cosas en no hay orden de reparación después de que agregué un control a mi página hasta que funciona "algo".

Hay mucho ruido sobre esto en Internet, pero no pude encontrar una "solución real" (todavía). Una cosa que leí además de la ya mencionada es que podría tener algo que ver con espacios de nombres (no coincidentes/no existentes).

Cuando revisé mi aplicación, realmente no había declaraciones namespace en los archivos * .cs. Así que los agregué (en * .cs y * .aspx) y por algún tiempo pensé que funcionaba. Pero, por desgracia, ahora sé que este no era el caso ...

+5

1 opción (b) trabajó para mí – roufamatic

+1

Opción B trabajó para mí. Gracias. – William

2

He estado luchando con este problema todo el día, y no creerías cuál era el culpable. Inhabilité ReSharper 5.0 y, de repente, los errores desaparecieron. Increíble.

+0

Hmmm, la trama se complica. – StriplingWarrior

+0

+1 describe mi situación, también ... agrega un poco más de almidón de maíz a esa parcela. – roufamatic

+0

Intenta abrir el archivo .designer.cs y eliminar todo su contenido. Ciérrelo y luego modifique su formulario web/control nuevamente; debe regenerarse. Funcionó para mí – wows

5

Adición de una tercera opción para cuando @ de scherand (a) y (b) Falla:

c) "A veces", esto funciona así:

  • Retire los <%@ Register... %> entradas
  • Guardar el archivo .AS? ​​X Deja que el diseñador se queje.
  • Añadir el nuevo <%@ Register... %>
  • Guardar nuevo

[añadido Oct-13-2010]:
d) "A veces", así:

  • Claro AS? X archiva todo menos el contenido más básico.
  • Comience a agregar piezas de nuevo, un bit cada vez.
  • Guardar.
  • Compruebe que no recibió el mensaje de error.
  • Vuelve a agregar algunas piezas más. Enjuague. Repetir.

Utilizo una herramienta de comparación de texto con una copia de seguridad del archivo AS? X para esto.

Intento evitar agregar los controles que causan el error hasta el final. También trato de agregar desde la parte inferior de la página. Sin embargo, no sé de una regla dura. Es un ejercicio de intuición.

(¿Alguien alguna vez la forma de saberlo?)

+0

La opción C funcionó para mí – Xorandor

0

Copia de los montajes que faltan en el directorio de Visual Studio \ Common7 \ IDE \ de reuniones públicas me dio mensajes de error más específicas que 'no se pudo cargar el archivo o ensamblado '. Desde aquí, comenté algunas partes problemáticas de la página, eliminé el archivo .designer.cs y elegí "Convertir a aplicación web" en el menú contextual del archivo .ascx.

0

Bueno, he tenido este problema durante dos días. En la medida en que ninguna solución propuesta resolvió completamente el problema (se ve muy ... errático), llegué al botón Información de la Asamblea (o algo similar ... mi VS está en español) en la Pestaña Aplicación de las propiedades del proyecto. Solo cambié el idioma neutral ... y ahora se implementa correctamente.

No tengo idea de la correlación, pero llegué aquí después de ver cómo se mostraban algunos errores relacionados con la información del conjunto en la consola después de "convertir a la aplicación web".

Para asegurarse de que su aplicación web está bien implementada, puede ver las primeras líneas de los archivos aspx y comprobar si todos los CodeFiles son CodeBehind en su lugar. Si ve "Codefile = ...", fallará en la máquina de despliegue.

Lo sentimos por no ser más explícito, pero este es un tema extraño para mí: S

13

Mi solución:

  1. Cierre y vuelva a abrir Visual Studio.
  2. ¿Se ha solucionado el problema? Si no, vaya a 1.
+6

Resharper me dice que hay un potencial bucle infinito en su algoritmo. ;-) – StriplingWarrior

+0

+1 para la respuesta. Por cierto su solución realmente funcionó para meXD –

+1

+1 - Funcionó como un amuleto ... VS 2010 me echó a perder y olvidé este truco ya que tengo menos necesidad de hacerlo – Dimitri

0

Tuve un problema similar pero con los ensamblajes que habíamos creado. En nuestro caso, el número de versión era muy específico, por lo que puede no funcionar si todos sus archivos dicen 1.0.0.0.

Antes que nada, elimine el archivo de diseñador para el archivo problemático aspx. Haga clic derecho en el archivo aspx y seleccione "Convertir a aplicación web", similar a lo que otros sugirieron. Hacerlo en el archivo es más rápido y se obtiene una ventana emergente con el error en lugar de una advertencia que debe buscar. En nuestro caso, el error fue Generation of the designer file for OurPage.aspx failed: Could not load file or assembly 'OurCustomAssembly, Version=1.0.234.567...

Lo que hice entonces fue utilizar una herramienta que busca contenido de archivos (por ejemplo Agent Ransack) y apuntamos a nuestra carpeta fuente (que también tiene los archivos de compilación/caché) y buscamos archivos "que contienen texto "con la versión específica. Para cada uno de los proyectos que surgieron, eliminé la referencia al ensamblado que estaba fallando, volví a agregarlo y luego reconstruí el proyecto individual. La búsqueda nuevamente mostró que la versión había desaparecido.

Ejecuto Convertir a la aplicación web de nuevo y ahora recibí el mismo error pero con un archivo diferente. Esta vez ninguno de los anteriores funcionó. Pude determinar que solo algunas de las etiquetas de registro eran problemáticas. Eliminé esas etiquetas de registro, creé variables protegidas en el código subyacente de la página (ya que no estaban en el archivo del diseñador) y volví a compilar la solución. Luego eliminé las variables que había creado, guardado, releído todas las etiquetas de registro, guardadas. En ese punto, el archivo de diseñador se generó correctamente.

Puede haber una manera más directa de hacer todo esto, pero eso fue lo que terminó funcionando para mí. El tiempo dirá, pero espero que esto sea una solución permanente.

0

estoy usando ReSharper Plataforma 6. pude resolver este problema haciendo lo siguiente:

  1. ReSharper (barra de menús)> Opciones ...
  2. Medio Ambiente> General > Borrar cachés
  3. Reinicie Visual Studio
0

Otra solución que he encontrado para ser eficaz en Visual Stu Dio 2015 es cerrar VS y luego despejado a cabo los siguientes directorios:

  • % USERPROFILE% \ AppData \ Local \ Temp \ Temporary ASP.NET Files \
  • % USERPROFILE% \ AppData \ Local \ Microsoft \ VisualStudio \ 14.0 \ ProjectAssemblies \

Abra su solución nuevamente y seleccione Build-> Clean Solution.

Ahora ve a la página ASPX, y luego seleccione Proyecto-> Convertir en aplicación Web

Cuestiones relacionadas