asp.net mvc 4 - pagina - No se pueden encontrar archivos borrados en el host
web forms c# tutorial (6)
Como muchos otros, recibo el siguiente error al implementar mi aplicación ASP.Net MVC:
No se puede cargar el conjunto de la interfaz V8; verifique que los siguientes archivos estén instalados con su aplicación: ClearScriptV8-32.dll, ClearScriptV8-64.dll, v8-ia32.dll, v8-x64.dll
Clearscript se instaló como parte de un esfuerzo por transformar menos archivos sobre la marcha para las solicitudes de página.
He probado mi aplicación localmente en ISS Express e ISS sin ningún problema.
Tal como se sugiere aquí http://clearscript3.rssing.com/chan-14849437/all_p12.html También he incluido las bibliotecas de códigos faltantes como recursos para mi proyecto.
ClearScriptV8-32.dll
, ClearScriptV8-64.dll
, v8-ia32.dll
, v8-x64.dll
están todos incluidos en una carpeta ClearScript.V8 en la carpeta bin. La eliminación de esta carpeta no resuelve el problema.
En mi ingenio final. Cualquier ayuda es apreciada.
Esta fue la segunda vez que se inició un proyecto con Clearscript v8, y bueno, recordé cuál era el problema la primera vez. Cargando Native Lib v8.
Usted pensaría que en algún lugar de CÓMO COMENZAR o un tema similar, los desarrolladores de ClearScript deberían haber mencionado que es necesario tener la biblioteca nativa de V8 en las subcarpetas ''ia32'' o ''x64'' (Plataforma x86 o Plataforma x64 respetuosamente). Crear las subcarpetas anteriores. y coloque las librerías v8 nativas allí (32 bits en ''ia32'', 64 bits en ''x64'').
Supongo que se olvidaron de anotar ese pensamiento. justo como recordatorio ... el código fuente tomado del cargador que me ayudó la última vez que rastreé el problema ...
private static IntPtr LoadNativeLibrary()
{
var suffix = Environment.Is64BitProcess ? "x64" : "ia32";
var fileName = "v8-" + suffix + ".dll";
var messageBuilder = new StringBuilder();
var paths = GetDirPaths().Select(dirPath => Path.Combine(dirPath, deploymentDirName, fileName)).Distinct();
foreach (var path in paths)
{
var hLibrary = NativeMethods.LoadLibraryW(path);
if (hLibrary != IntPtr.Zero)
{
return hLibrary;
}
var exception = new Win32Exception();
messageBuilder.AppendInvariant("/n{0}: {1}", path, MiscHelpers.EnsureNonBlank(exception.Message, "Unknown error"));
}
var message = MiscHelpers.FormatInvariant("Cannot load V8 interface assembly. Load failure information for {0}:{1}", fileName, messageBuilder);
throw new TypeLoadException(message);
}
Por extraño que parezca, este cargador debería haber lanzado un mensaje más significativo en un entorno de depuración, pero no lo hizo. En cambio, tenemos: FileNotFoundException con el mensaje "No se pudo cargar el archivo o el ensamblaje ''ClearScriptV8'' o una de sus dependencias. El sistema no puede encontrar el archivo especificado". . Supongo que el código en otra parte es otro cargador similar que en realidad no usa LoadLibrary pero recurre al cargador por defecto de .Net, lo que da una excepción sin sentido.
Espero que esto ayude a otros a resolver problemas similares.
Ninguna de las respuestas funcionó para mí. Es una aplicación de servicio de Windows.
Basado en respuesta aceptada ; Eliminé v8-ia32.dll y ClearScriptV8-32.dll (ya que mi aplicación está orientada a x64 )
Se solucionó el problema.
Para que quede claro, esta excepción no siempre es causada por un ClearScriptV8-32.dll
faltante, ClearScriptV8-64.dll
, v8-ia32.dll
o v8-x64.dll
. A menudo, el problema es que no se puede encontrar una dll referenciada por una de las dll mencionadas anteriormente. En los casos en que las dll adecuadas se encuentran en el servidor, la instalación del Visual C ++ Redistributable apropiado resolverá este problema de dependencia transitiva.
De acuerdo con el foro de discusión del proyecto, ClearScript ya no admite Visual Studio 2012 . Lo que significa que la versión de Visual C ++ Redistributable que debe instalarse en su servidor depende de la versión de ClearScript que su proyecto utiliza:
- Versiones ClearScript 5.0 - 5.3: Visual C ++ Redistributable para Visual Studio 2012
- Versiones ClearScript 5.4 - .....: Visual C ++ Redistributable para Visual Studio 2013
Puede que sea un poco tarde, pero esto puede ayudar a otros a llegar a esta publicación.
Este es un error común cuando no tiene el Visual C ++ Redistributable para Visual Studio 2012 o superior instalado en el servidor de alojamiento
http://www.microsoft.com/en-gb/download/details.aspx?id=30679
Si está implementando Windows Server 2012 con el rol de IIS, hay dos cosas que debe hacer para ejecutar ClearScriptV8:
- Como señaló:
tiene que instalar en el servidor de alojamiento el Visual C ++ Redistributable para Visual Studio 2012 o superior: http://www.microsoft.com/en-gb/download/details.aspx?id=30679
- Asegúrese de colocar ClearScript.dll en la carpeta bin / del sitio web, y ClearScriptV8-64.dll y v8-x64.dll en bin / ClearScript.V8 .
Opcional, para aplicaciones / plataformas de 32 bits:
- Si usa una plataforma de 32 bits, coloque ClearScriptV8-32.dll y v8-ia32.dll en la carpeta bin / ClearScript.V8 / del sitio web. Además, en el Administrador de IIS, haga clic con el botón derecho en el grupo de aplicaciones del sitio y seleccione "Configuración avanzada ..." . Establezca la propiedad " Habilitar aplicaciones de 32 bits " en verdadero .
la causa es que asp.net carga instantáneamente todas las bibliotecas en el directorio / bin. Agregué la siguiente regla para ignorar los ensamblajes de Clearscript, y funcionó
<configuration>
<system.diagnostics>
<trace autoflush="true" />
</system.diagnostics>
<system.web>
<compilation>
<assemblies>
<remove assembly="ClearScriptV8-64" />
<remove assembly="ClearScriptV8-32" />
....
</assemblies>
</compilation>
...