2010-04-13 13 views
13

vs2010 için vjs yürütmesine dayanan bir projeyi dönüştürmeyi denedim, ancak çalışmaya çalışırken hata veriyor.visual j # çalışmayan .net 4

O o hatayı veriyor

"dosya veya derleme 'vjslib' ya da bağımlılıklarından biri. Girişimi yanlış biçimdeki bir program yüklenmek istendi yüklenemedi."

Ben VJs çalışma zamanını yeniden ama yardım etmedi.

Bununla çalışmak için .net 4 elde etmenin bir yolu var mı?

+1

.NET 4.0'da J # desteği olduğunu sanmıyorum. J # referansları, CLR'nin aynı versiyonu olduğu için 3.5'da çalıştı..NET 4.0, J # desteği olmadan (veya düşündüğüm) CLR'nin yeni bir sürümünü sunar. –

+0

Bir başka deyişle, şansım yok ... bu referansı kullandığım kütüphaneler. – Arthurdent510

cevap

19

Çok basit bir çözüm - Calling J# code from .NET 4.0

Sen kontrol altına almak ve ilk açık bir yol temin yükleyin. Sonra bir dahaki sefere gerekli, zaten yolu biliyor (veya zaten AppDomain'de yüklü).

LoadLibrary işlevini kullanın böylece pinvoke referansını almak gerekir

:

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

yüküne (Global.asax Application_Start Konsol/WinForms veya ana fonksiyonu olarak):

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

Görünüşe göre MS, eski kütüphanelerin herhangi bir yeni .NET indirmesinden tüm J # desteğini çıkardı, bu yüzden J # libs olmadan çalışmayacak. MS'de onları [burada] (http://www.microsoft.com/en-us/download/details.aspx?id=4712) bulabilirsiniz. Farkına kadar çözümün neden çalışmadığını anlayamadım. Tüm DLL'ler v2.0.50727'den eksikti Bu paket tüm J # desteğini geri yükler. – lukecampbell

3

Uygulamamın C: \ WINDOWS \ Microsoft.NET \ Framework \ v2.0.50727 \ vjsnativ.dll (64 bit Microsoft.NET \ Framework64 \ v2.0.50727 \ vjsnativ.dll için) uygulamasını kopyalayarak çalışıyorum. hata ayıklama/serbest bırakma dizini.

Microsoft'un .net 4.0 ile çalışmak için başka bir yeniden dağıtılabilen bir paket yayınlaması gerekeceğinden şüpheleniyorum. Bu arada, bu iş iyi bir iş çıkarıyor.

+0

Lütfen dosyayı hangi klasöre kopyaladığınızı açıklayabilir misiniz? Bu sorun var ama bir hata ayıklama/yayımlama dizini görmüyorum. .net 4 web sitem var (web uygulaması değil)./Bin içine kopyalamayı denedim ama bu işe yaramadı: {"DLL 'yüklenemedi' vjsnativ ': Belirtilen modül bulunamadı. (HRESULT özel durum: 0x8007007E)"} Teşekkür ederim. – bgs264

+0

@ bgs264: Bir .net uygulaması için buna ihtiyacım vardı. Bir web sitesi için tahminim aslında diğer dll'ler ile birlikte bin dizinine koymak olurdu. Bu işe yaramazsa, başka ne önereceğimden emin değilim. – Jimmy

+0

teşekkürler. Hiçbir zar - Ben J # kullanmadı başka bir bileşen buldum (bu 3. parti PDF XSL FO işlemci) - Şimdi başka bir şey kullanarak - bir düzeltme değil ama ben yolda geri döndüm. Teşekkürler. – bgs264

4

http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4712'dan Microsoft Visual J # Version 2.0 Yeniden Dağıtılabilir Paketi'ni indirdim ve yükledim. Sorun çözüldü.

+2

Bu cevap birkaç yıl olsa da, doğru cevaptır. Benim durumumda zaten yüklü olduğunu düşündüm, ama basit bir Onarım hile yaptı. Ayrıca sadece (çok geç) J # 2.0 Second Edition olduğunu fark ettim: 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

mevcut cevaplara eklemek için bak, ben çözümler benim için işe yaramadı bulundu.

Yaptığım ilk şey, Windows Denetim Masası'nı kullanarak Microsoft Visual J # 2.0 Yeniden Dağıtılabilir Paketi -SE (x64)'u onarmaktı (yalnızca sağ tıklayıp onarmayı tıklayın). Bu, sorunu düzeltmek için önceki girişimlerimde herhangi bir zarar vermem durumunda oldu.

David Thielen tarafından sağlanan çözümü zaten uygulamıştım. Kopyala "vjscor.dll", "vjslib.dll" ve C "vjsnativ.dll":

1 Ekstra adım (sorun çözüldü) benim için anlaşma kapalı \ Windows \ Microsoft.NET \ Framework64 \ C için v2.0.50727: \ Windows \ \ Framework \ v2.0.50727

Yani temelde Microsoft paketi 64 bit .NET framework içine doğru DLL dosyaları yerleştirilir ve elle bunları taşımak zorunda Microsoft.NET Daha sonra 32 bitlik bir klasör, daha sonra David Thielen'in çözümü (yukarıda) tarafından çözüm klasörüme kopyala yapıştırılır.