2010-04-13 3 views
13

Ich habe versucht, ein Projekt zu konvertieren, das auf der VJS-Laufzeit auf vs2010 beruht, aber es beim Versuch zu laufen Fehler aus.Visual j # funktioniert nicht in .net 4

Es ist die Störung zu geben, dass „Kann Datei oder Assembly‚vjslib‘laden oder eine ihrer Abhängigkeiten. Es wurde versucht, ein Programm mit einem falschen Format zu laden.

ich neu installierte die VJs Laufzeit aber es schien nicht zu helfen.

Gibt es eine Möglichkeit, bekommen .net 4 damit arbeiten?

+1

Ich glaube nicht, dass es J # Unterstützung in .NET 4.0 gibt. J # Referenzen arbeiteten in 3.5, weil es die gleiche Version der CLR war..NET 4.0 führt eine neue Version der CLR ohne J # Unterstützung ein (oder so dachte ich). –

+0

Also ein anderes Wort, ich habe kein Glück ... die Bibliotheken, die ich benutze, die die j # -Bibliothek referenzieren, können nicht in .net 4 verwendet werden? – Arthurdent510

Antwort

19

Sehr einfache Lösung - Calling J# code from .NET 4.0

Sie die Kontrolle übernehmen und es laden zuerst einen expliziten Pfad zu liefern. Wenn es das nächste Mal benötigt wird, kennt es den Pfad bereits (oder er ist bereits in der AppDomain geladen).

müssen Sie Loadlibrary Funktion nutzen, so die pinvoke Referenz importieren:

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

Die auf Last (entweder Hauptfunktion in Console/WinForms oder in 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

Es scheint, dass MS alle J # -Support von neuen .NET-Downloads von älteren Bibliotheken entfernt, so dass dies ohne die J # -Bibliotheken nicht funktioniert. Sie können sie [hier] finden (http://www.microsoft.com/en-us/download/details.aspx?id=4712) bei MS Ich konnte nicht herausfinden, warum die Lösung nicht funktionierte, bis ich realisierte alle DLLs fehlten von v2.0.50727 Dieses Paket installiert alle J # Unterstützung zurück. – lukecampbell

3

Ich habe dies durch Kopieren von C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ vjsnativ.dll (für 64 Bit Microsoft.NET \ Framework64 \ v2.0.50727 \ vjsnativ.dll) zu meiner Anwendung funktioniert Debug/Release-Verzeichnis.

Ich vermute, dass Microsoft ein anderes j # redistributable-Paket freigeben muss, um mit .net 4.0 zu arbeiten. In der Zwischenzeit macht dieser Work-Around eine gute Arbeit.

+0

Könnten Sie bitte klären, in welchen Ordner Sie die Datei kopiert haben? Ich habe dieses Problem, aber ich sehe kein Debug/Release-Verzeichnis. Ich habe eine .net 4 Website (keine Webanwendung). Ich habe versucht, in die/bin zu kopieren, aber das hat nicht funktioniert: {"DLL konnte nicht geladen werden" vjsnativ ': Das angegebene Modul konnte nicht gefunden werden. (Ausnahme von HRESULT: 0x8007007E) "} Vielen Dank. – bgs264

+0

@ bgs264: Ich brauchte das für eine .net App. Meine Vermutung für eine Website wäre in der Tat gewesen, sie zusammen mit den anderen DLLs in das Verzeichnis bin zu legen. Wenn das nicht funktioniert, bin ich mir nicht sicher, was ich sonst vorschlagen soll. – Jimmy

+0

danke. Keine Würfel - Ich habe gerade eine andere Komponente gefunden, die J # nicht verwendet hat (es war ein PDF XSL FO Prozessor von Drittanbietern) - Jetzt benutze ich etwas anderes - keine Lösung, aber ich bin wieder auf dem richtigen Weg. Vielen Dank. – bgs264

4

Ich habe Microsoft Visual J Version 2.0 Redistributable Package von http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4712 heruntergeladen und installiert. Das Problem ist behoben.

+2

Obwohl diese Antwort ein paar Jahre später ist, ist es die richtige Antwort. In meinem Fall dachte es, ich hätte es bereits installiert, aber eine einfache Reparatur hat es geschafft. Ich habe auch (zu spät) festgestellt, dass es eine J # 2.0 Second Edition gibt: x86: http://www.microsoft.com/en-us/download/details.aspx?id=18084 x64: http: // www. microsoft.com/de-de/download/details.aspx?id=15468 –

0

Um zu den vorhandenen Antworten hinzuzufügen, fand ich, dass die Lösungen für mich nicht funktionierten.

Das erste, was ich tat, war die Reparatur der Microsoft Visual J # 2.0 Redistributable-Paket-SE (x64) mit Windows-Systemsteuerung (Just Rechtsklick und klicken Sie auf Reparatur). Dies war für den Fall, dass ich bei meinen früheren Versuchen, das Problem zu beheben, Schaden angerichtet hatte.

Ich hatte bereits die von David Thielen zur Verfügung gestellte Lösung implementiert.

1 Extra-Schritt, um die Sache für mich geschlossen (das Problem gelöst): Copy "vjscor.dll", "vjslib.dll" und "vjsnativ.dll" von C: \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727 um C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727

Also im Grunde das Microsoft-Paket platziert die richtigen DLLs in die 64-Bit-NET-Framework und ich musste manuell in Bewegung der 32-Bit-Ordner, der dann von David Thielens Lösung (oben) in meinen Lösungsordner kopiert wird.