2010-04-13 12 views
13

में काम नहीं कर रहा है। मैंने एक प्रोजेक्ट को कनवर्ट करने का प्रयास किया जो vjs रनटाइम पर बनाम 2010 पर निर्भर करता है, लेकिन इसे चलाने का प्रयास करते समय त्रुटियां होती हैं।विज़ुअल जे # .NET 4

यह त्रुटि है कि दे रहा है "फ़ाइल या विधानसभा 'vjslib' या अपनी निर्भरता में से एक। एक प्रयास गलत प्रारूप के साथ एक कार्यक्रम लोड करने के लिए बनाया गया था लोड नहीं कर सका।"

मैं वीजे क्रम पुनर्स्थापित , लेकिन यह मदद नहीं प्रतीत होता था।

क्या इस के साथ काम करने के लिए .NET 4 प्राप्त करने का कोई तरीका है?

+1

मुझे नहीं लगता कि .NET 4.0 में कोई J # समर्थन है। जे # संदर्भ 3.5 में काम करते थे क्योंकि यह सीएलआर का एक ही संस्करण था।.NET 4.0 ने जे # समर्थन के बिना सीएलआर का एक नया संस्करण प्रस्तुत किया (या तो मैंने सोचा)। –

+0

तो एक और शब्द, मैं भाग्य से बाहर हूं ... जिन पुस्तकालयों का मैं उपयोग करता हूं, वे जे # लाइब्रेरी का उपयोग .NET 4 में उपयोग करने में सक्षम नहीं होंगे? – Arthurdent510

उत्तर

19

बहुत सरल उपाय - Calling J# code from .NET 4.0

आप नियंत्रण लेने के लिए और इसे लोड पहले एक स्पष्ट पथ की आपूर्ति। फिर अगली बार इसकी आवश्यकता हो, यह पहले से ही पथ जानता है (या यह पहले से ही AppDomain में लोड हो चुका है)।

आप LoadLibrary फ़ंक्शन का उपयोग करें, तो PInvoke संदर्भ आयात करने के लिए की आवश्यकता होगी:

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

लोड पर (कंसोल/WinForms में या 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

ऐसा प्रतीत होता है कि एमएस ने पुराने पुस्तकालयों के किसी भी नए .NET डाउनलोड से सभी जे # समर्थन छीन लिया है, इसलिए यह जे # libs के बिना काम नहीं करेगा। आप उन्हें यहां [यहां] http://www.microsoft.com/en-us/download/details.aspx?id=4712) देख सकते हैं, मुझे पता नहीं चला कि समाधान तब तक काम नहीं कर रहा था जब तक मुझे एहसास नहीं हुआ सभी डीएलएल v2.0.50727 से गायब थे, यह पैकेज सभी जे # समर्थन को वापस स्थापित करता है। – lukecampbell

3

मुझे यह सी: \ विन्डोज़ \ माइक्रोसॉफ्ट.NET \ Framework \ v2.0.50727 \ vjsnativ.dll (64 बिट माइक्रोसॉफ्ट.NET \ Framework64 \ v2.0.50727 \ vjsnativ.dll के लिए) मेरे आवेदन के लिए कॉपी करके काम करने के लिए मिला है। डीबग/रिलीज निर्देशिका।

मुझे संदेह है कि माइक्रोसॉफ्ट को .NET 4.0 के साथ काम करने के लिए एक और जे # पुनर्वितरण योग्य पैकेज जारी करने की आवश्यकता होगी। इस बीच, यह काम-आसपास एक अच्छा काम करता है।

+0

कृपया आप यह स्पष्ट कर सकते हैं कि आपने फ़ाइल को किस फ़ोल्डर में कॉपी किया है? मुझे यह समस्या है लेकिन मुझे डीबग/रिलीज निर्देशिका नहीं दिखाई दे रही है। मेरे पास एक .NET 4 वेब साइट है (वेब ​​एप्लिकेशन नहीं)। मैंने/bin में कॉपी करने की कोशिश की लेकिन उसने काम नहीं किया: {"DLL लोड करने में असमर्थ 'vjsnativ': निर्दिष्ट मॉड्यूल नहीं मिला। (HRESULT: 0x8007007E से अपवाद)"} धन्यवाद। – bgs264

+0

@ bgs264: मुझे इसे एक .net ऐप के लिए चाहिए था। एक वेब साइट के लिए मेरा अनुमान वास्तव में अन्य डीएल के साथ, बिन निर्देशिका में रखना होगा। अगर यह काम नहीं करता है, तो मुझे यकीन नहीं है कि और क्या सुझाव देना है। – Jimmy

+0

धन्यवाद। कोई पासा नहीं - मुझे बस एक और घटक मिला जो जे # का उपयोग नहीं करता था (यह एक तृतीय पक्ष पीडीएफ एक्सएसएल एफओ प्रोसेसर था) - अब कुछ और उपयोग करना - एक फिक्स नहीं, लेकिन मैं ट्रैक पर वापस आ गया हूं। धन्यवाद। – bgs264

4

मैंने http://www.microsoft.com/en-us/download/details.aspx?displaylang=en&id=4712 से माइक्रोसॉफ्ट विजुअल जे # संस्करण 2.0 पुनर्वितरण योग्य पैकेज डाउनलोड किया है और इसे स्थापित किया है। समस्या हल हो गई है।

+2

हालांकि यह उत्तर कुछ साल बाद है, यह सही जवाब है। मेरे मामले में मैंने सोचा कि मैंने इसे पहले से ही स्थापित किया है, लेकिन एक साधारण मरम्मत ने चाल की है। इसके अलावा मुझे अभी भी एहसास हुआ (बहुत देर हो चुकी है) कि एक जे # 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

सी: \ विंडोज़ \ माइक्रोसॉफ्ट.NET \ Framework \ v2.0.50727 \ vjsnativ.dll को सी: \ विंडोज \ माइक्रोसॉफ्ट.NET \ Framework \ v4 में कॉपी करने का एकमात्र तरीका है। 0.3031 9 फ़ोल्डर। http://community.microfocus.com/borland/managetrack/starteam/w/knowledge_base/17108.error-unable-to-load-dll-vjsnativ-the-specified-module-could-not-be-found-exception-from-hresult-0x8007007e.aspx

0

मौजूदा उत्तरों में जोड़ने के लिए, मैंने पाया कि समाधान मेरे लिए काम नहीं करते हैं।

पहली बात मैंने किया था माइक्रोसॉफ्ट विजुअल जे # 2.0 पुनर्वितरण योग्य पैकेज -एसई (x64) विंडोज नियंत्रण कक्ष का उपयोग कर (बस दायाँ क्लिक करें और मरम्मत पर क्लिक करें)। अगर समस्या को ठीक करने के मेरे पिछले प्रयासों में मुझे कोई नुकसान हुआ तो यह था।

मैंने डेविड थीलन द्वारा प्रदान किए गए समाधान को पहले ही लागू कर दिया था। कॉपी "vjscor.dll", "vjslib.dll" और सी से "vjsnativ.dll":

1 अतिरिक्त कदम मेरे लिए सौदा (समस्या हल) बंद कर दिया \ Windows \ Microsoft.NET \ Framework64 \ v2.0.50727सी करने के लिए: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727

तो मूल रूप से माइक्रोसॉफ्ट पैकेज सही DLLs 64-बिट नेट ढांचे में रखा जाता है और मैं उन्हें मैन्युअल रूप से में ले जाने के लिए किया था 32-बिट फ़ोल्डर जिसे तब डेविड थीलन के समाधान (उपरोक्त) द्वारा मेरे समाधान फ़ोल्डर में कॉपी-पेस्ट किया जाता है।