Es un proyecto de WebApi que usa VS2015.
Paso para reproducir:
- Crear un proyecto WebApi vacío
- Cambie la ruta de salida de Build de "bin \" a "bin \ Debug \"
- correr
Todo funciona perfectamente hasta que cambie la ruta de salida de compilación de "bin \" a "bin \ Debug \". De hecho, cualquier ruta de salida que no sea "bin \" no funcionará.
Una pequeña cosa adicional es que, tener otra ruta de salida a cualquier lugar funcionaría siempre que deje una compilación en "bin \".
Por favor, ayuda a proporcionar una solución para resolver esto. Supongo que costará un problema en la implementación real.
c#
asp.net
asp.net-web-api
msbuild
cscmh99
fuente
fuente
Respuestas:
Si su proyecto tiene referencias de Roslyn y lo está implementando en un servidor IIS , es posible que obtenga errores no deseados en el sitio web, ya que muchos proveedores de alojamiento todavía no han actualizado sus servidores y, por lo tanto, no son compatibles con Roslyn.
Para resolver este problema, deberá eliminar el compilador de Roslyn de la plantilla del proyecto . Eliminar Roslyn no debería afectar la funcionalidad de su código. Funcionó bien para mí y algunos otros proyectos (C # 4.5.2) en los que trabajé.
Haz los siguientes pasos:
Elimine de los siguientes paquetes de Nuget usando la línea de comando que se muestra a continuación ( o puede usar la GUI del administrador de paquetes de Nuget haciendo clic derecho en la solución de proyecto raíz y eliminándolos ).
Elimine el siguiente código de su archivo Web.Config y reinicie IIS . ( Use este método solo si el paso 1 no resuelve su problema ) .
fuente
'Enabling the .NET Compiler Platform.
Tengo el mismo problema. Aparentemente, el compilador .NET no se cargó en el
GAC
. Lo que hice para resolverlo fue:Primero, en la consola del administrador de paquetes, escriba:
Ahora, por alguna razón, los amables caballeros de Microsoft han decidido no instalarlo en el GAC por nosotros. Puede hacerlo manualmente abriendo el Símbolo del sistema del desarrollador y escribiendo:
Conclusión
Microsoft trata de alentar a todos a hacer todo con nugets, lo que podría estar bien sin los errores ocasionales con los que te encuentras con el sistema nuget. Intente usar el mismo proyecto en diferentes soluciones, actualice accidentalmente (o no) uno de los muchos nugets que usa en una de ellas, y si no tiene suerte, verá lo que quiero decir cuando intente construir la otra solución. Por otro lado, colocar archivos en el GAC también puede causar problemas en el futuro, ya que las personas tienden a olvidar lo que ponen allí y luego, al configurar nuevos entornos, olvidan incluir estos archivos. Otra posible solución es colocar los archivos en una carpeta central para dlls de terceros (aunque es extraño llamar al compilador como tercero), lo que crea problemas de referencias rotas al configurar nuevos entornos. Si decide instalar el dll en el GAC, Tenga cuidado y recuerde que lo hizo. Si no lo hace, descargue el nuget para cada proyecto nuevamente y cargue con todos los molestos errores causados por él (al menos solía suceder cuando finalmente me cansé de ello y simplemente coloqué los archivos en el GAC). Ambos enfoques pueden causarle dolores de cabeza y crear problemas, es solo una cuestión de qué problemas prefiere tratar. Microsoft recomienda usar el sistema nuget y, en general, es mejor escucharlos que a un programador desconocido en SO, a menos que esté completamente harto del sistema nuget y lo use para tratar con el GAC el tiempo suficiente para que sea una mejor alternativa para ti. descargue el nuget para cada proyecto nuevamente y cargue con todos los molestos errores causados por él (al menos solía suceder cuando finalmente me cansé de él y simplemente coloqué los archivos en el GAC). Ambos enfoques pueden causarle dolores de cabeza y crear problemas, es solo una cuestión de qué problemas prefiere tratar. Microsoft recomienda usar el sistema nuget y, en general, es mejor escucharlos que a un programador desconocido en SO, a menos que esté completamente harto del sistema nuget y lo use para tratar con el GAC el tiempo suficiente para que sea una mejor alternativa para ti. descargue el nuget para cada proyecto nuevamente y cargue con todos los molestos errores causados por él (al menos solía suceder cuando finalmente me cansé de él y simplemente coloqué los archivos en el GAC). Ambos enfoques pueden causarle dolores de cabeza y crear problemas, es solo una cuestión de qué problemas prefiere tratar. Microsoft recomienda usar el sistema nuget y, en general, es mejor escucharlos que a un programador desconocido en SO, a menos que esté completamente harto del sistema nuget y lo use para tratar con el GAC el tiempo suficiente para que sea una mejor alternativa para ti.
fuente
Simplemente agregue el siguiente paquete nuget a su proyecto
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
.Tuve el mismo problema
fuente
Tengo el mismo problema que mi aplicación funcionó en Vs2013 pero recibí el error después de actualizar a Vs2015.
fuente
Sé que es un hilo antiguo, pero me gustaría señalar el posible problema de versión de DotNetCompilerPlatform.dll, f. ex. Después de una actualización. Compruebe si el nuevo archivo Web.config generado es diferente a su web.config publicado, en particular la parte system.codedom. En mi caso fue el cambio de versión de 1.0.7 a 1.0.8. El nuevo dll ya se había copiado en el servidor, pero no cambié el antiguo web.config (con algunas configuraciones especiales del servidor):
Después de actualizar las dos líneas, el error desapareció.
fuente
2.0.0
de2.0.1
De acuerdo con sus pasos de reproducción, supuse que cambiar la ruta de salida en la propiedad de la aplicación era su único cambio después de crear la aplicación. Lo único que hace este cambio es que le dice a Visual Studio que coloque los ensamblados de salida de MSBuild en la nueva carpeta. Sin embargo, en tiempo de ejecución, ASP.Net no tendría idea de que debería cargar ensamblados desde esta nueva carpeta en lugar de la carpeta \ bin.
Esta respuesta muestra la forma de cambiar el directorio de salida de compilación de una aplicación WebApi. Para obtener exactamente el mismo error que se muestra en esa publicación, debe comentar toda la sección <system.codedom> en web.config. Y luego puede seguir las instrucciones para cambiar la ruta de salida.
Después de obtener su solicitud de trabajo, puede descomentar la sección <system.codedom>. Si no utiliza la nueva sintaxis C # 6 en su aplicación, puede desinstalar Microsoft.CodeDom.Providers.DotNetCompilerPlatform de su aplicación; de lo contrario, puede agregar la siguiente línea de comando en su evento posterior a la compilación,
El nuevo proveedor de CodeDom siempre busca la carpeta "\ roslyn" en \ bin. El comando anterior funciona como una solución alternativa y copia la carpeta \ roslyn de su nueva carpeta de salida a \ bin.
Sin embargo, en mis experimentos, la herramienta de publicación de Visual Studio publicó los ensamblajes de salida en la carpeta \ bin en la ubicación de implementación, independientemente de mi configuración de ruta de salida. Supongo que su aplicación aún debería funcionar en la implementación real.
fuente
Manera fácil - Proyecto> Administrar paquetes NuGet ...> Examinar (pestaña)> en la entrada de búsqueda configure esto: Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Puede instalar o actualizar o desinstalar e instalar este compilador
fuente
Otra posible solución:
fuente
Se detuvo después de publicar en el servidor de producción. La razón por la que me mostró este error se debió a que se desplegó en una sub carpeta. En IIS hice clic derecho en la subcarpeta y ejecuté "Convertir a aplicación" y después de esto funcionó.
fuente
En mi caso, esto sucedió cuando cambio el permiso de la carpeta de la aplicación y se eliminó la cuenta IIS_IUSRS. Después de volver a agregar IIS_IUSRS (Administrador IIS-> YourWebApp -> Editar permiso -> Agregar IIS_IUSRS) a la carpeta de la aplicación y funcionó.
fuente
Así es como lo resolví :
bin
carpeta en el directorio del proyecto.Build Solution
. En VS2017 (Ejecutar como administrador)> Compilar> Compilar solución .fuente
Si está utilizando git, probablemente esté ignorando el .dll en el commit
fuente
Tuve varios proyectos en la solución y el proyecto web (problema al dar este error) no se configuró como proyecto de inicio. Establecí este proyecto web como el proyecto de inicio, hice clic en el elemento del menú "Depurar" -> "Iniciar depuración" y funcionó. Dejé de depurar y luego lo intenté de nuevo y ahora vuelve a funcionar. Extraño.
fuente
Entonces el problema volvió. Desinstalé ambos
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
yUninstall-package Microsoft.Net.Compilers
no ayudé. Luego instalado, sin ayuda. Proyecto limpio y sin ayuda. Reinicié el servidor sin ayuda. Entonces noté que el proyecto no necesitaba el último que actualmente es 1.0.5 sino 1.0.3 ya que ese fue el error que no pudo cargar la versión 1.0.3. Así que instalé esa versión dll y ahora funciona.fuente
ASP.NET no busca
bin/debug
ni ninguna subcarpeta en bin para ensamblajes como lo hacen otros tipos de aplicaciones. Puede indicar al motor de ejecución que busque en un lugar diferente utilizando la siguiente configuración:fuente
Debe actualizar los paquetes "Microsoft.CodeDom.Providers.DotNetCompilerPlatform" y "Microsoft.Net.Compilers" en su proyecto.
fuente
En mi caso, recibí el error cuando tenía mi aplicación web en 4.5.2 y las bibliotecas de clase referenciadas en 4.6.1. Cuando actualicé la aplicación web a la versión 4.5.2, el error desapareció.
fuente
Recibía este error porque mi usuario del grupo de aplicaciones estaba configurado en ApplicationPoolIdentity. Lo cambié a una cuenta de usuario / servicio que tiene acceso a la carpeta y el error desapareció.
fuente
Aquí están mis hallazgos. También me enfrenté a este problema hoy por la mañana. Acabo de agregar mi usuario actual al grupo de aplicaciones en el que se estaba ejecutando la aplicación.
Pasos:
Abrir IIS
Haga clic en el grupo de aplicaciones
Seleccione su grupo de aplicaciones en el que está teniendo problemas
Haga clic derecho -> configuración avanzada
Haga clic en el icono de tres puntos al lado de la identidad
Ahora seleccione cuenta personalizada
Dé su nombre de usuario y contraseña de PC
Salvar
Actualice su aplicación ... y comenzará a funcionar. Hubo algún problema de seguridad para acceder a dll.
fuente
simplemente desinstale el paquete de la consola del administrador de paquetes del comando a continuación
PM> Desinstalar paquete Microsoft.CodeDom.Providers.DotNetCompilerPlatform
PM> Desinstalar-paquete Microsoft.Net.Compilers
y luego instalarlo nuevamente desde nuget manager
fuente
Si recientemente instaló o actualizó el
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
paquete, verifique que las versiones de ese paquete referenciadas en su proyecto apunten a la versión correcta e igual de ese paquete:En
ProjectName.csproj
, asegúrese de que haya una<Import>
etiqueta paraMicrosoft.CodeDom.Providers.DotNetCompilerPlatform
y apunte a la versión correcta.En
ProjectName.csproj
, asegúrese de que haya una<Reference>
etiqueta paraMicrosoft.CodeDom.Providers.DotNetCompilerPlatform
, y apunte a la versión correcta, tanto en elInclude
atributo como en el elemento secundario<HintPath>
.En ese proyecto
web.config
, asegúrese de que la<system.codedom>
etiqueta esté presente y que sus<compiler>
etiquetas secundarias tengan la misma versión en sutype
atributo.Por alguna razón, en mi caso una actualización de este paquete de 1.0.5 a 1.0.8 causado la
<Reference>
etiqueta en el.csproj
que tiene suInclude
apuntando a la antigua versión 1.0. 5 .0 (que había eliminado después de actualizar el paquete), pero todo lo demás apuntaba a la nueva y correcta versión 1.0. 8 .0.fuente
¡Asegúrese de que su proyecto se haya construido completamente!
Haga clic en la pestaña 'Salida' y asegúrese de no tener algo como:
Y abre tu
bin
carpeta y verifique si está actualizada.Tuve un montón de errores mecanografiados que ignoré al principio, olvidando que estaban rompiendo la compilación y provocando que no se copiaran archivos DLL.
fuente
Agregue una referencia al ensamblado CppCodeProvider.
fuente
En mi caso, mi proyecto web no se cargó correctamente (mostraba que el proyecto no estaba disponible), luego tuve que volver a cargar mi proyecto web después de abrir mi estudio visual en modo administrador y luego todo funcionó bien.
fuente
Simplemente tuve el mismo problema y fue porque moví la ubicación del proyecto y simplemente necesitaba recrear el directorio virtual.
fuente
La excepción con la que nos encontramos no estaba en el servidor local sino en el servidor remoto, el CI de Azure lo estaba leyendo desde la carpeta de paquetes pero no se encontraron las versiones del compilador mencionadas anteriormente.
Para solucionar esto, modificamos el archivo del proyecto para que sea algo así
No se hace referencia a ninguno de los paquetes aquí directamente a las variables de entorno.
Esto solucionó el problema, sin embargo, en nuestros casos no utilizamos paquetes directamente desde "package.config", sino que tenemos una carpeta separada para mantener la integridad de la versión entre los equipos.
fuente
Vaya a inetmgr desde el comando de inicio En la consola del administrador de IIS, elija la carpeta de la aplicación en Sitio web predeterminado, haga clic derecho en esa carpeta y luego Convierta a la aplicación Ejecute el archivo .asmx Habilitando Se resolvió el problema
fuente
Compruebe si la
BIN
carpeta está cargada por completo o falta en los archivos.fuente
Con respecto a este error, he intentado:
uninstall-package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
uninstall-package Microsoft.Net.Compilers
e instalarlos nuevamente.Si bien todas estas parecen ser soluciones válidas, solo pude generar nuevos errores y al final, el error parece poder mostrarse cuando faltan ciertas referencias / nugets.
En mi caso, recientemente reinstalé Microsoft Office y hacía referencia a ensamblajes como Microsoft.Office.Core. La nueva instalación no parecía incluir los paquetes requeridos, lo que hizo que mi solución no pudiera compilarse correctamente.
Pude resolver este problema volviendo a trabajar mi código hasta el punto en que no necesitaba hacer referencia a Microsoft.Office, pero podría haberlo resuelto buscando los paquetes necesarios e instalándolos en consecuencia.
Parece un mensaje de error poco claro de Visual Studio.
fuente
Si ha estado trabajando en un proyecto y esto acaba de aparecer como un error. REINICIAR su computadora (o servidor en mi caso) esto solucionó el problema para mí.
fuente