c# - tipo - "Hubo un error al ejecutar el generador de código seleccionado" en el andamio VS 2013
error al ejecutar el generador de codigos seleccionado intente regenerar el proyecto (21)
Estoy creando una nueva vista de un modelo.
El mensaje de error que recibo es
Error
Hubo un error al ejecutar el generador de código seleccionado:
''Acceso a la ruta
''C: / Users / XXXXXXX / AppData / Local / Temp / SOMEGUID / EntityFramework.dll'' denegó ''.
Estoy ejecutando VS 2013 como administrador.
Miré Is MvcScaffolding compatible con VS 2013 RC por línea de comandos? pero esto no pareció resolver el problema.
VS2013 C # 5 MVC5 Nuevo proyecto iniciado en VS 2013.
Error VS2013: Hubo un error al ejecutar el generador de código seleccionado: ''Ya se ha agregado una configuración para el tipo'' SolutionName.Model.SalesOrder ''...''
Tuve este problema mientras trabajaba en un curso de Pluralsight "Datos padre-hijo con EF, MVC, Knockout, Ajax y validación". Intentaba agregar un nuevo artículo con scaffolded usando la plantilla MVC 5 Controller con vistas, usando Entity Framework .
La clase de contexto de datos que estaba usando, incluida una sustitución del método OnModelCreating. La anulación fue necesaria para agregar algunas configuraciones explícitas de columna de base de datos donde los valores predeterminados de EF no eran adecuados. Esta anulación fue simple, trabajó y no hubo errores, pero (como se señaló anteriormente) sí interfirió con la generación del código del andamio del Controlador.
Solución que funcionó para mí:
1 - Eliminé (comentado) mi anulación de OnModelCreating y la plantilla de andamios se completó sin mensajes de error: mi código de controlador se generó como se esperaba.
2 - Sin embargo, tratando de construir el proyecto estrangulado porque ''El modelo había cambiado''. Como mi código de controlador se había generado correctamente, restauré (sin comentar) la anulación de OnModelCreating y el proyecto se creó y ejecutó correctamente.
A menudo encuentro este error al trabajar con MVC5 y EF cuando creo los modelos y el contexto en un proyecto separado (Mi capa de acceso a datos) y me olvido de agregar la cadena de conexión de contexto al Web.Config del proyecto MVC.
El problema fue con un directorio corrupto web.config y paquete.
Creé el nuevo proyecto y copié mis archivos de códigos en el nuevo proyecto de trabajo, luego volví y ejecuté diffs en los archivos de configuración y una carpeta diff en el proyecto en sí.
El problema era que las actualizaciones habían destruido mi archivo de configuración con muchos artefactos de actualización que terminé borrando.
El segundo problema fue que el viejo proyecto también seguía colgado en archivos DLL más antiguos que se suponía que debían borrarse con la aplicación del paquete Nuget. Así que limpié las carpetas obj e bin, luego la carpeta del paquete. Una vez hecho esto, pude reparar y reconstruir el proyecto más antiguo.
No he investigado por qué el archivo de configuración o la carpeta del paquete estaban tan trabajados, pero asumo que es una de dos cosas.
- Posiblemente el paquete Nuget tiene un defecto
- El control de fuente TFS bloqueó nuget para actualizar adecuadamente las diversas dependencias.
Desde entonces, antes de aplicar cualquier actualización, reviso todo. Sin embargo, dado que no he actualizado EF en un tiempo, no hay evidencia de que esto haya resuelto mi problema de FE o andamiaje.
En caso de que ayude a alguien, cambié el nombre del espacio de nombres en el que residía el modelo, luego reconstruí el proyecto, luego lo renombré de nuevo, lo reconstruí y luego funcionó.
Esto generalmente está relacionado con un formato de su Web.config
Reconstruya la solución y busque en Errores, pestaña Mensajes. Si tiene algún problema de formato con un web.config, lo verá allí. Arreglarlo e intentarlo de nuevo.
Ejemplo: tenía connectionstring
lugar de connectionString
Esto me sucedió cuando intenté crear un nuevo andamio fuera de la carpeta de nivel superior para un Area determinada.
- Mi area
| - File.cs (intentado crear un nuevo andamio aquí. Fracaso).
Simplemente volví a seleccionar mi área y el problema desapareció:
- AyArea (Agregar => nuevo artículo de andamio)
Tenga en cuenta que después de la generación del andamio, lo llevan a un lugar donde no podrá crear un nuevo andamio sin volver a seleccionar el área primero (en VS 2013 al menos).
Esto suele ser causado por un archivo Web.config
no válido. Tuve el mismo problema y resultó que, inadvertidamente, cambié el bloque de comentario HTML <!-- -->
a un bloque de comentario del lado del servidor @* *@
(a través de una acción Reemplazar todo).
Y en caso de que esté desarrollando una aplicación WinForms, intente buscar en App.config
.
He visto este error con un nuevo proyecto MVC5 al hacer referencia a un modelo de un proyecto diferente. Comprobando la ruta, EntityFramework.dll sí existió. Sin embargo, solo fue de lectura. El supervisor de procesos mostró que hubo un error al intentar eliminar el archivo. Al configurar EntityFramework.dll en mi carpeta de paquetes (copia almacenada en el control de origen) para que se pueda escribir solucionó este error pero apareció otro que decía que no podía cargar el ensamblado EntityFramework porque no coincidía con el que se referenciaba. Mi clase de modelo se definió en un proyecto diferente que estaba usando una versión anterior del marco de la entidad. El proyecto MVC5 hacía referencia a EF 6 mientras que el modelo era de un proyecto que hace referencia a EF 4.4. La actualización a EF 6 en el proyecto del modelo me lo arregló.
Intenté cada respuesta en cada sitio web que encontré, y nada funcionó ... hasta que esto sucedió. Publicando tarde en caso de que alguien como yo venga y tenga la misma experiencia frustrante que yo.
Mi problema era similar a muchos aquí, mensaje de error genérico cuando trato de usar andamios para tratar de agregar un nuevo controlador (ef6, webapi). Inicialmente pude usar andamios para unos 15 controladores, después de eso simplemente dejó de funcionar un día.
Solución final:
- Abra su carpeta de trabajo en su disco duro para su solución.
- Eliminar todo dentro de la carpeta BIN
- Borrar todo dentro de la carpeta OBJ
- Solución limpia, solución de reconstrucción, agregar controlador a través de andamios
Voila! (para mi)
Lo que funcionó para mí para resolver esto: Cerrar la solución, y abra el proyecto haciendo clic en el archivo del proyecto y no en el archivo de la solución, agregue su controlador, y bobs su tío
Ninguno de los anteriores me ayudó.
Descubrí que la causa de mi problema era anular OnModelCreating en mi clase de contexto de la que dependía el elemento de andamio. Comentando este método, el andamio funciona.
Desearía que Microsoft publicara un código menos defectuoso.
Para nosotros tiene algo que ver con las configuraciones de compilación, donde tenemos una configuración de compilación Debug | x64 que recientemente habíamos utilizado, lo que en retrospectiva parecía ser cuando el andamio dejó de funcionar.
(Sospecho que hay al menos 10 cosas diferentes que pueden causar esto, como lo demuestran las diversas respuestas en SO que algunas personas encuentran para trabajar para ellos, pero que no funcionan para otros, así que no estoy sugiriendo mi la solución funcionará para todos).
Lo que funcionó para nosotros (utilizando VS 2013 Express para Web en 64 bits de Windows 7):
It (scaffolding) NO estaba funcionando en la configuración Debug | x64 Build. Pero hacer lo siguiente (y parece que cada paso es necesario, no se puede saber cómo hacerlo de una manera más racional) parece funcionar para nosotros.
- Primero, cambie a Depurar | x86 - use el Administrador de configuración de la Solución (clic con el botón derecho) para todos los proyectos en su solución. (Depurar | Cualquier CPU también puede funcionar).
- Limpia tu solución
- Apagar Visual Studio. (No puedo hacer que funcione si me salteo esto).
- Abra Visual Studio.
- Abra su solución.
- Construye tu solución.
- Ahora intente agregar elementos de andamios; para nosotros, funcionó en este momento, ya no recibimos el mensaje de error que decía algo sobre "Hubo un error al ejecutar el generador de código seleccionado".
Si necesita volver a una configuración de compilación andamio que no funciona, puede hacerlo, después de haber anclado todo lo que necesita por el momento. Cambiamos de nuevo a nuestro Debug | x64 después de andamiar lo que necesitábamos.
Pude resolver este problema y comprender un poco mejor lo que estaba pasando. La mejor parte es que puedo recrear el problema y solucionarlo para estar seguro de mi explicación aquí. La resolución fue instalar exactamente la misma versión de Entity Framework para el proyecto Data Layer Layer y el Web Project.
Mi capa de acceso a datos tenía Entity Framework v6.0.2 instalado usando NuGet, el proyecto web no tenía Entity Framework instalado. Al intentar crear un controlador de API web con la plantilla de Entity Framework, Entity Framework se instala automáticamente pero es una de las versiones anteriores 6.0.0. Me sorprendió ver dos versiones de Entity Framework instaladas, más nuevas en mi proyecto Data Layer y más antiguas en mi proyecto web. Una vez, eliminé la versión anterior e instalé la versión más nueva en Web Project, el problema desapareció.
Reconstruir la solución funciona para mí. antes de reconstruir, encuentro que el número de referencias de mi ''ApplicationDbContext'' es cero, eso es imposible, así que recompile la solución, todo está bien ahora.
Revisé todos mis proyectos y cada uno tenía la misma versión de Entity Framework. En mi caso, el problema era que uno de mis proyectos tenía como objetivo .Net 4.0, mientras que el resto era .Net 4.5.
Solución:
- Para cada proyecto en solución Proyecto-> Propiedades-> Aplicación: establezca el Marco de destino en .Net 4.5 (o lo que necesite).
- Herramientas-> Administrar paquete NuGet para solución. Encuentre el "Marco de la entidad" instalado. Y haz clic en Administrar. Desmarque todos los proyectos (tenga en cuenta los proyectos que requieren EF). Ahora, vuelva a gestionar EF y compruebe que los proyectos que necesita.
- Limpia y reconstruye la solución.
Sé que estoy fuera tarde, pero fue muy frustrante, así que espero que esto ayude un poco ...
Mi problema era similar a muchas experiencias aquí, un mensaje de error genérico al intentar agregar una nueva vista o usar andamios para agregar un nuevo controlador.
Descubrí que mvc 5 y ef 6 modelbuilder no son buenos amigos:
Mi solución:
1.Comenza a modelBuilder en tu clase de contexto.
2. Solución limpia, solución de reconstrucción.
3. Añadir vista y controlador a través de andamios
4. Descomentar modelbuilder.
Tal vez un poco poco convencional, ¡pero funcionó! (para mi)
También estoy teniendo este problema con MSVS2013 Update 4 y EF 6.0. El mensaje que estaba recibiendo era:
there was an error running the selected code generator.
A configuration for type XXXX has already been added ...[]
Tengo un modelo con alrededor de 10 clases. Yo andamé elementos al principio del proyecto sin problemas.
Después de algunos días añadiendo funcionalidad, traté de andamiar otra clase del modelo, pero un error me impedía hacerlo.
Intenté actualizar MSVS de la actualización 2 a la actualización 4, comentar mi método OnModelCreating y otras ideas propuestas sin suerte.
Como una forma temporal de continuar con el proyecto, creé un proyecto asp.net diferente, pegué mis clases de modelo (estoy usando una API fluida, por lo que hay una pequeña anotación en ellas) y creé mi controlador y vistas con éxito.
Después de eso, pegué las clases creadas en el proyecto original y corrigí algunos errores (principalmente nombres dbset).
Parece estar funcionando, aunque supongo que todavía encontraré errores relacionados con las relaciones entre clases (debido a la falta de configuración fluida cuando se crean).
Espero que esto ayude a otros usuarios.
Tengo exactamente el mismo problema. Se encontró por primera vez con esto mientras seguía el curso Pluralsight "Datos padre-hijo con EF, MVC, Knockout, Ajax y validación".
Estoy usando MVC 5, EF 6.1.1 y framework 4.5.2.
Incluso después de actualizar mi VS2013 para actualizar 4, este error aún persiste.
Pudo sortear este molesto problema cambiando el DbSet a IDbSet dentro de la clase DbContext. La respuesta fue originalmente de here .
//From
public DbSet SalesOrders { get; set; }
//To
public IDbSet SalesOrders { get; set; }
Tuve el mismo problema cuando en mi aplicación MVC EF propiedad de referencia (en la ventana Propiedades) "Versión específica" fue marcada como False y en mi otro proyecto (que contiene DBContext y modelos) que fue refrendado de la aplicación MVC que la propiedad de referencia EF fue marcada como Cierto. Cuando lo marqué como Falso, todo estuvo bien.
Tuve este problema al intentar agregar un Controlador Api a mi aplicación web MVC ASP.NET por una razón completamente diferente a las otras respuestas dadas. Había incluido accidentalmente un atributo StringLength con una declaración IndexAttribute para una propiedad entera debido a una operación de copiar y pegar:
[Index]
[IndexAttribute("NumTrainingPasses", 0), StringLength(50)]
public int NumTrainingPasses { get; set; }
Una vez que me deshice de la declaración IndexAttribute , pude agregar un Controlador Api para el Modelo que contenía la propiedad ofensiva (NumTrainingPasses).
Para ayudar a los motores de búsqueda, aquí está el mensaje de error completo que recibí antes de solucionar el problema:
Hubo un error al ejecutar el generador de código seleccionado:
No se han podido recuperar los metadatos de ''Owner.Models.MainRecord''. La propiedad
''NumTrainingPasses'' no es una matriz String o Byte. La longitud solo se puede configurar para propiedades de matrices de cadenas o bytes.
- vs2013 actualización 4
- ef 5.0.0
- ibm db2connector 10.5 fp 5
cambie el archivo web.config como tal: eliminó el / los proveedor / es de la etiqueta ef:
<entityFramework>
</entityFramework>
etiquetas de cadena de conexión agregadas en secciones de configuración:
</configSections>
<connectionStrings>
<add name=".." connectionString="..." providerName="System.Data.EntityClient" />
</connectionStrings>