2010-04-13 23 views
13

Intenté convertir un proyecto que depende del tiempo de ejecución de vjs en vs2010, pero se produce un error al intentar ejecutarlo.visual j # no funciona en .net 4

Es dar el error que "No se pudo cargar el archivo o ensamblado 'vjslib' o uno de sus dependencias. Se ha intentado cargar un programa con un formato incorrecto."

Reinstalé el tiempo de ejecución VJs , pero no pareció ayudar.

¿Hay alguna manera de obtener .net 4 para trabajar con esto?

+1

No creo que haya compatibilidad con J # en .NET 4.0. Las referencias J # funcionaron en 3.5 porque era la misma versión del CLR..NET 4.0 presenta una nueva versión del CLR sin soporte J # (o eso creía yo). –

+0

Entonces, otras palabras, no tengo suerte ... las bibliotecas que uso que hacen referencia a la biblioteca j # no podrán ser usadas en .net 4? – Arthurdent510

Respuesta

19

solución muy simple - Calling J# code from .NET 4.0

a tomar el control y cargue primero el suministro de una ruta explícita. Luego, la próxima vez que se necesite, ya conoce la ruta (o ya está cargada en el dominio de la aplicación).

Usted tendrá que utilizar la función LoadLibrary, por lo importar la referencia PInvoke:

[DllImport("kernel32", SetLastError = true)] 
static extern IntPtr LoadLibrary(string lpFileName); 

El de la carga (o bien la función principal de la consola de Windows Forms/o en Global.asax Application_Start):

if (Environment.Version.Major >= 4) 
{ 
    string folder = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.System), @"..\Microsoft.NET\Framework\v2.0.50727"); 
    folder = Path.GetFullPath(folder); 
    LoadLibrary(Path.Combine(folder, "vjsnativ.dll")); 
} 
+1

Parece que MS eliminó todo el soporte de J # de cualquier nueva descarga .NET de bibliotecas antiguas, por lo que esto no funcionará sin las J # libs. Puede encontrarlos [aquí] (http://www.microsoft.com/en-us/download/details.aspx?id=4712) en MS No pude entender por qué la solución no funcionaba hasta que me di cuenta todas las DLL faltaban en v2.0.50727 Este paquete instala todo el respaldo de J #. – lukecampbell

3

Esto funcionó copiando C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ vjsnativ.dll (para 64 bit Microsoft.NET \ Framework64 \ v2.0.50727 \ vjsnativ.dll) a mi aplicación directorio de depuración/liberación.

Sospecho que Microsoft tendrá que lanzar otro paquete j # redistributable para trabajar con .net 4.0. Mientras tanto, este trabajo de rutina hace un buen trabajo.

+0

¿Podría aclarar en qué carpeta ha copiado el archivo? Tengo este problema pero no veo un directorio de depuración/publicación. Tengo un sitio web .net 4 (no aplicación web). Intenté copiar en/bin pero eso no funcionó: {"Imposible cargar DLL 'vjsnativ': no ​​se pudo encontrar el módulo especificado. (Excepción de HRESULT: 0x8007007E)"} Gracias. – bgs264

+0

@ bgs264: Necesitaba esto para una aplicación .net. Supongo que para un sitio web habría sido ponerlo en el directorio bin, junto con los otros dll. Si eso no funciona, entonces no estoy seguro de qué más sugerir. – Jimmy

+0

gracias. Sin dados: acabo de encontrar otro componente que no usó J # (era un procesador de tercera parte PDF XSL FO) - Ahora estoy usando algo más, no es una solución, pero estoy de nuevo en el buen camino. Gracias. – bgs264

4

He descargado el paquete redistribuible de la versión 2.0 de Microsoft Visual J # desde http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4712 y lo instalé. El problema está resuelto.

+2

Aunque esta respuesta es unos años más tarde, es la respuesta correcta. En mi caso, pensé que ya lo había instalado, pero una simple reparación hizo el truco. También me acabo de dar cuenta (demasiado tarde) de que hay una segunda edición de J # 2.0: x86: http://www.microsoft.com/en-us/download/details.aspx?id=18084 x64: http: // www. microsoft.com/en-us/download/details.aspx?id=15468 –

0

Para agregar a las respuestas existentes, encontré que las soluciones no me funcionaron.

Lo primero que hice fue reparar el Microsoft Visual J # 2.0 Paquete redistribuible -SE (x64) usando el Panel de control de Windows (solo haga clic con el botón derecho y haga clic en reparar). Esto fue en caso de que haya causado algún daño en mis intentos anteriores de solucionar el problema.

Ya había implementado la solución provista por David Thielen.

1 paso adicional cerró el trato para mí (resuelto el problema): Copiar "vjscor.dll", "vjslib.dll" y "vjsnativ.dll" de C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 para C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727

Así que básicamente el paquete de Microsoft coloca las DLL correctos en el marco .NET de 64 bits y tuve que mover manualmente en la carpeta de 32 bits que luego es copiada y pegada en mi carpeta de solución por la solución de David Thielen (arriba).