2015-09-25 28 views
8

मेरा WPF डेस्कटॉप ऐप WinRT कक्षाओं का भी उपयोग कर रहा है।फ़ाइल या असेंबली लोड नहीं हो सका Windows.winmd '

आदेश में है कि मैं इस ट्यूटोरियल https://software.intel.com/en-us/articles/using-winrt-apis-from-desktop-applications का पालन करना है।

ठीक है, यह काम करता है।

अब जब मैं MSI फ़ाइल (मैं Microsoft इंस्टालर और ClickOnce का उपयोग कर के साथ दोनों की कोशिश की) उत्पन्न करने के लिए प्रयास करते हैं, मैं इस त्रुटि हो रही है:

समस्या प्रकट पैदा होता है। फ़ाइल या असेंबली 'सी: \ प्रोग्राम फ़ाइलें (x86) \ Windows किट \ 8.1 \ संदर्भ \ CommonConfiguration \ Neutral \ Windows.winmd' या इसकी निर्भरताओं में से कोई भी लोड नहीं हो सका। एक गलत प्रारूप के साथ एक प्रोग्राम लोड करने का प्रयास करें।

मैं पहले से ही here सुझाव के रूप में, इस परियोजना की सफाई के साथ और ASP.NET अलग नेट ढांचे के अस्थायी को हटाने के साथ ClickOnce अक्षम करने के साथ की कोशिश की।

यह मेरी app.config में मेरे स्टार्टअप टैग

मैं VS2015 उपयोग कर रहा हूँ और सी # मैं इसे कैसे ठीक है और मेरे MSI उत्पन्न कर सकते हैं?

पुनश्च: मैं एक साधारण WPF डेस्कटॉप ऐप्लिकेशन के साथ एक और MSI पैदा करने में कोई समस्या नहीं है।

उत्तर

25

हाँ, Windows.winmd फ़ाइल के रूप में एक संदर्भ परियोजना तैनात हो रही के लिए एक बाधा है में शामिल किया। आपके द्वारा उपयोग किए जाने वाले टूल इसकी सामग्री के बारे में उलझन में आते हैं, एक .NET असेंबली की तरह दिखता है। लेकिन ऐसा नहीं है, .winmd फ़ाइल प्रारूप पुराने प्रकार के COM प्रकार लाइब्रेरी प्रारूप का विस्तार है। WinRT के लिए, उन्होंने टीएलबी फ़ाइल प्रारूप के प्रतिबंधों को दूर करने के लिए .NET के मेटाडेटा प्रारूप का उपयोग किया।

यह एक बहुत अच्छा विचार था, कई .NET उपकरण मेटाडेटा का उपयोग कर सकते हैं। कंपाइलर्स और डिस्सेबलर्स की तरह, उन्हें सभी बुनियादी ढांचे को जगह में रखना नहीं था। लेकिन यह संदर्भ असेंबली की भूमिका निभाता है, केवल संकलक इसकी सामग्री का उपयोग करता है और इसे कभी भी तैनात नहीं किया जाना चाहिए। अभी आप बहुत ज्यादा है कि अच्छे विचार पसंद नहीं है :)

हालांकि यह एक ClickOnce तैनाती के लिए तय करने के लिए बहुत आसान है। प्रोजेक्ट> गुण> टैब प्रकाशित करें> एप्लिकेशन फ़ाइलें बटन का उपयोग करें। Windows.winmd "बहिष्कृत करें" के लिए "स्थिति प्रकाशित करें" चयन बदलें। नमूना परियोजना स्क्रीन-शॉट:

enter image description here


यह बहुत स्पष्ट है कि आप "माइक्रोसॉफ्ट इंस्टालर" क्या इसका मतलब यह नहीं है, मैं तुम्हें एक सेटअप परियोजना के बारे में बात मान लेंगे। यद्यपि पुरानी समस्याओं के कारण विजुअल स्टूडियो से हटा दिया गया है, यह अभी भी गैलरी में उपलब्ध है।

दरार करने के लिए एक कठिन अखरोट है कि, आप सामान्य रूप से जोड़ें> परियोजना आउटपुट संदर्भ मेनू प्रविष्टि का उपयोग यह निर्भरता पता लगाने जाने के लिए चाहते हैं। यही कारण है कि अब और काम नहीं करता है, यह दुखी गैर descript त्रुटि संदेश के साथ मर जाता है:

ERROR: An error occurred while validating. HRESULT = '80070057'

त्रुटि कोड का अर्थ है "अमान्य पैरामीटर", समस्या को कम करने में मदद नहीं करता। लेकिन आप सुरक्षित रूप से मान सकते हैं कि यह .exe विधानसभा में Windows.winmd संदर्भ को हल करने की कोशिश कर रहा पर मर जाता है।

कामकाज पर निर्भरता को स्वतः पहचानने दें लेकिन उन्हें स्वयं चुनें। "लक्ष्य मशीन पर फ़ाइल सिस्टम" शीर्षक वाली संपादक स्क्रीन से, एप्लिकेशन फ़ोल्डर का चयन करें। "प्राथमिक आउटपुट ..." पर राइट-क्लिक करें और हटाएं का चयन करें।

एप्लिकेशन फ़ोल्डर> जोड़ें> फ़ाइल पर राइट-क्लिक करें और बिन \ रिलीज़ फ़ोल्डर से प्रोजेक्ट की .exe फ़ाइल चुनें। अन्य फ़ाइलों के लिए दोहराएं, आप एक गाइड के रूप में सूचीबद्ध ClickOnce एप्लिकेशन फ़ाइलों में मिली फ़ाइल प्रविष्टि का उपयोग कर सकते हैं।

बिल्ड परियोजना, अब आप मिल:

WARNING: Unable to find dependency 'WINDOWS' (Signature='(null)' Version='255.255.255.255') of assembly 'WindowsFormsApplication144.exe'

कौन सा पूरी तरह से सौम्य है, हम इसे यह पता लगाने के लिए नहीं करना चाहते, Setup.exe कार्यक्रम ठीक काम करता है।

+0

धन्यवाद @ हंसपैसेंट, मैं कल इसे आजमाउंगा क्योंकि अब मेरे पास केवल एक उबंटू लैपटॉप है। हां, "माइक्रोसॉफ्ट इंस्टालर" द्वारा, मेरा मतलब एक सेटअप प्रोजेक्ट था, मैंने इसे इसलिए कहा क्योंकि मैंने सोचा था कि क्योंकि यह विजुअल स्टूडियो सुविधा "माइक्रोसॉफ्ट इंस्टालर" प्रोग्राम की स्थापना के बाद मौजूद है ... – eeadev

+0

यह क्लिकऑन के साथ काम करता है, लेकिन यह होगा एक एमएसआई फ़ाइल उत्पन्न नहीं, है ना? अगर मुझे एमएसआई चाहिए तो क्या होगा? – eeadev

+0

आपको "माइक्रोसॉफ्ट इंस्टालर" से एमएसआई मिल रहा है जिसके बारे में आप बात कर रहे थे। यही वह परिदृश्य है जिसका मैंने परीक्षण किया था और जिसमें से मैंने त्रुटि संदेशों को कॉपी/पेस्ट किया था। –

संबंधित मुद्दे