2015-08-12 7 views
27

ये डीएलएल विजुअल स्टूडियो के पूर्व संस्करणों में मेरे प्रोजेक्ट में नहीं जोड़े गए हैं। मेरा अनुमान है कि मेरे संदर्भों में से एक इन डीएलएल की निर्भरता है। मैंने जो पढ़ा है, उस पर प्रकाश डाला गया Microsoft.Office.Interop.Excel एक हो सकता है। क्या कोई इसकी पुष्टि कर सकता है? मुझे यह भी ध्यान रखना चाहिए कि वीएस 2015 हमेशा इन डीएलएल को प्रकाशित करता है भले ही मैं उन्हें परियोजना से बाहर कर दूं। अगर मैं उन्हें हटा देता हूं, तो वीएस 2015 उन्हें रीमेक करेगा।विजुअल स्टूडियो 2015 क्यों stdole.dll और Microsoft.AnalysisServices.AdomdClient.dll को मेरे प्रोजेक्ट में जोड़ रहा है?

संपादित करें: मैंने पुष्टि की है कि Excel और Office संदर्भ stdole.dll को शामिल करने का कारण बन रहे हैं। Stdole.dll को हटाने के लिए नीचे चयनित उत्तर देखें।

मैंने कस्टम संदर्भों को पार कर लिया है। अगर अधिक जानकारी की आवश्यकता है तो मुझे बताएं। यहाँ मेरे वर्तमान संदर्भ है:

enter image description here

enter image description here

+5

इसके बारे में कैसे? मेरा पहला डाउनवोट। कोई प्रतिक्रिया के साथ एक downvote अत्यधिक अनुत्पादक है। –

+1

मुझे इस प्रश्न में रूचि है, क्योंकि stdole.dll मेरे द्वारा किए गए सभी ऐप्स पर पॉप-अप कर रहा है। मैं क्लिक-एक बार प्रकाशित करता हूं और यह विजुअल स्टूडियो 2015 के साथ विफलताओं का कारण बनता है। यह इस प्रश्न से असंबंधित हो सकता है, लेकिन अन्य लोगों को यह प्रश्न उस डीएल के लिए खोज सकता है। इस दूसरे व्यक्ति ने उसे अपने हस्ताक्षरित प्रतिलिपि के साथ बदल दिया: https://iznum.wordpress.com/2013/04/22/strong-name-signature-not-valid-for-this-assembly-stdole-dll/ – 249076

+1

एक और लड़के ने इसके बारे में एक बग पोस्ट किया: https://connect.microsoft.com/VisualStudio/feedback/details/1658072/could-not-load-assembly-file-stdole-dll-that-were-not-actually-using – 249076

उत्तर

12

आप विकल्प है, तो एम्बेड Interop प्रकार का उपयोग करें और एक साथ यह सब से बाहर stdole.dll छोड़ सकते हैं या आप समस्या में हर बार जब आप के लिए कदम चलेंगे एप्लिकेशन (नए सर्वर या देव मशीन) जहां stdole.dll हस्ताक्षरित नहीं है।

समस्या: एक संदर्भ है जिसमें stdole.dll की आवश्यकता है और stdole.dll अब स्वचालित रूप से बिन फ़ोल्डर में धक्का दिया जा रहा है।

समाधान:

  • संदर्भ की आवश्यकता होती है stdole.dll खोजें
  • जाओ (इस नीचे कैसे करना है के बारे में अधिक) यह गुण (सही क्लिक-> गुण) है को
  • बदलें "एम्बेड इंटरऑप प्रकार "झूठी से सच तक।

कैसे संदर्भ खोजने के लिए: आप अपने संदर्भ के गुणों पर क्लिक करते हैं, "एम्बेड Interop प्रकार" गलत पर सेट है, तो देखने के लिए जाँच। आगे भी खोदने के लिए, Nick's answer में कुछ अच्छी जानकारी है।

संदर्भ मैं अब तक पुष्टि की है कि stdole.dll (शायद अधिक कार्यालय कार्यक्रमों के साथ)

  • कार्यालय

  • एक्सेल

  • कोर

  • का उपयोग

    क्रिस्टल रिपोर्ट्स (धन्यवाद लिथियम। जैसा कि निक बताता है, आप नहीं कर सकते ई Embed Interop Types=true की स्थापना का लाभ)

आप और अधिक मिल जाए, उन्हें इस सूची में जोड़ने के लिए या टिप्पणी में उन्हें ध्यान दें और मैं इसे कर देंगे।What's the difference setting Embed Interop Types true and false in Visual Studio?

स्कॉट Hanselman भी क्या "एम्बेड Interop प्रकार" यहाँ करता है के बारे में बात:

Hans Passantदृढ़ता से यहाँ Embed Interop Types=false की स्थापना को हतोत्साहित http://www.hanselman.com/blog/CLRAndDLRAndBCLOhMyWhirlwindTourAroundNET4AndVisualStudio2010Beta1.aspx

+2

हाय, उत्तर के लिए धन्यवाद। आप stdole.dll – Lithium

2

मेरी स्थिति में मैंने पाया कि की प्रति स्थानीय संपत्ति टॉगल असेंबली जो stdole.dll पर निर्भर करती है, प्रोजेक्ट को सहेजती है और फिर संपत्ति को अपने मूल मूल्य पर वापस ले जाती है, और अंततः परियोजना को सहेजने से समस्या हल हो जाती है। यह संपत्ति इस समस्या के साथ अन्य लोगों के लिए एम्बेड इंटरप प्रकार प्रकार संपत्ति से भी संबंधित हो सकती है।

यह क्या करता है स्पष्ट रूप से कॉपी स्थानीय संपत्ति को .xxproj फ़ाइल में सहेजता है। अन्यथा, इस संपत्ति की स्थिति प्रोजेक्ट फ़ाइल में नहीं है और एक डिफ़ॉल्ट माना जाता है। मेरे पास कोई स्पष्टीकरण नहीं है कि यह प्रोजेक्ट फ़ाइल में प्रॉपर्टी की उपस्थिति के रूप में क्यों काम करता है, विजुअल स्टूडियो में प्रदर्शित मूल्य नहीं बदलता है और न ही असेंबली में वास्तव में प्रकाशित होने या नहीं होने का कारण बनता है। मैंने इन गुणों में उनके मूल रूप से प्रदर्शित मूल्यों से आगे और पीछे टॉगल करने के बाद भी बदलाव नहीं किया।

मुझे लगता है कि मुझे इलाज मिलने से पहले मैंने देखा कि परियोजना की सफाई और इसे पुनर्निर्माण करने से stdole.dll को बिन में कॉपी नहीं किया गया है। यह प्रकाशित करने के बाद ही stdole.dll दिखाया गया था।

+0

अच्छी जानकारी का उपयोग करने वाले संदर्भों की सूची में क्रिस्टल रिपोर्ट डीएलएस जोड़ सकते हैं। अब आप मुझे सोच रहे हैं कि क्या मैंने एक संदर्भ हटा दिया है जिसे 'स्थानीय कॉपी करें' पर सेट किया गया था और संदर्भ जिसे मैंने दोबारा जोड़ा था। –

+0

आपकी सहजता "एम्बेड इंटरप प्रकार" पर सही थी। मुझे समस्या मिली है और मेरा जवाब अपडेट किया गया है। –

8

मैं उम्र के लिए इस समस्या से निपट रहा हूं।

जब भी मैं वेब प्लेटफॉर्म से कुछ भी इंस्टॉल करता हूं या किसी भी अद्यतन stdole.dll को एक गैर हस्ताक्षरित संस्करण के साथ बदल दिया जाता है। मैंने थोड़ी देर पहले माइक्रोसॉफ्ट को बग की सूचना दी लेकिन बधिर कानों पर गिर गया।

मैं सी: \ प्रोग्राम फ़ाइलें (x86) \ Microsoft.NET \ प्राथमिक इंटरऑप असेंबली पर जाता हूं और यहां से हस्ताक्षरित संस्करण (22kb) की प्रतिलिपि बनाता हूं और संस्करण को C: \ Program Files (x86) \ Microsoft Visual Studio में प्रतिस्थापित करता हूं कार्यालय \ PIA \ Common (16kb) के लिए 14.0 \ विजुअल स्टूडियो टूल्स और इससे समस्या हल हो जाती है।

स्कॉट

+0

स्कॉट, मुझे stdole.dll के साथ गड़बड़ किए बिना ऐसा करने का कोई तरीका मिला। बस मेरा जवाब अपडेट किया गया। अभी भी आपको वोट दिया क्योंकि आपने मुझे एक और कामकाज दिया था। –

18

दूसरों के रूप में दर्शाया गया है, stdole.dll कार्यालय COM इंटरॉप घटकों का एक समूह के लिए एक प्राथमिक इंटरॉप विधानसभा है। आप यह निर्धारित कर सकते हैं कि यह निम्नलिखित करके आप अपने प्रोजेक्ट में क्यों शामिल हो रहे हैं।

विजुअल स्टूडियो में, Tools > Options > Projects and Solutions > Build and Run पर जाएं। "MSBuild प्रोजेक्ट बिल्ड आउटपुट वर्बोसिटी" सेटिंग को Detailed पर बदलें। अब अपनी परियोजना को साफ और पुनर्निर्माण करें।

आउटपुट विंडो खोलें और stdole के लिए खोजें।

25> Dependency "stdole, Version=7.0.3300.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a". 
25>  Resolved file path is "D:\Program Files (x86)\Microsoft Visual Studio 12.0\Visual Studio Tools for Office\PIA\Common\stdole.dll". 
25>  Reference found at search path location "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}". 
25>   For SearchPath "D:\Git\FoobarServices\Dependencies\Dependencies". 
25>   Considered "D:\Git\FoobarServices\Dependencies\stdole.winmd", but it didn't exist. 
25>   Considered "D:\Git\FoobarServices\Dependencies\stdole.dll", but it didn't exist. 
25>   Considered "D:\Git\FoobarServices\Dependencies\stdole.exe", but it didn't exist. 
25>   For SearchPath "{CandidateAssemblyFiles}". 
25>   Considered "Dependencies\CrystalDecisions.CrystalReports.Engine.dll", but its name "CrystalDecisions.CrystalReports.Engine" didn't match. 
25>   Considered "Dependencies\CrystalDecisions.Enterprise.Framework.dll", but its name "CrystalDecisions.Enterprise.Framework" didn't match. 
25>   Considered "Dependencies\CrystalDecisions.Enterprise.InfoStore.dll", but its name "CrystalDecisions.Enterprise.InfoStore" didn't match. 
25>   Considered "Dependencies\CrystalDecisions.ReportSource.dll", but its name "CrystalDecisions.ReportSource" didn't match. 
25>   Considered "Dependencies\CrystalDecisions.Shared.dll", but its name "CrystalDecisions.Shared" didn't match. 
25>   Considered "Dependencies\CrystalDecisions.Web.dll", but its name "CrystalDecisions.Web" didn't match. 
25>   For SearchPath "{TargetFrameworkDirectory}". 
25>   Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\stdole.winmd", but it didn't exist. 
25>   Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\stdole.dll", but it didn't exist. 
25>   Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0\stdole.exe", but it didn't exist. 
25>   For SearchPath "{Registry:Software\Microsoft\.NETFramework,v4.0,AssemblyFoldersEx}". 
25>   Considered AssemblyFoldersEx locations. 
25>  Required by "CrystalDecisions.Web, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL". 
25>  Required by "CrystalDecisions.ReportSource, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL". 
25>  Required by "CrystalDecisions.CrystalReports.Engine, Version=11.5.3700.0, Culture=neutral, PublicKeyToken=692fbea5521e1304, processorArchitecture=MSIL". 
25>  Required by "CrystalDecisions.Enterprise.InfoStore, Version=11.5.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304". 
25>  The ImageRuntimeVersion for this reference is "v1.0.3705". 

आप देख सकते हैं, जहां दृश्य स्टूडियो विधानसभा के लिए खोज के रूप में अच्छी क्या यह नीचे की आवश्यकता है: आप इस तरह एक वर्ग खोजना चाहिए। मेरे मामले में यह पुराने क्रिस्टल रिपोर्ट असेंबली का एक गुच्छा है।

कभी-कभी आप निर्भरता के माध्यम से इंटरऑप प्रकारों को एम्बेड कर सकते हैं क्योंकि टोनी सुझाव देता है, लेकिन हमेशा नहीं। मेरे लिए, क्रिस्टल रिपोर्ट असेंबली इसका समर्थन नहीं करते हैं।

मैंने stdole.dll (32 केबी, डिजिटल हस्ताक्षरित) को C:\Program Files (x86)\Microsoft.NET\Primary Interop Assemblies\ से मेरी परियोजना के अंदर "निर्भरता" फ़ोल्डर में कॉपी करके इस समस्या को हल किया है (और कपटपूर्ण एक स्कॉट्सनिप्रो का उल्लेख किया गया है)। मैंने अपनी परियोजना में फ़ाइल को जोड़ा और इसमें एक स्पष्ट संदर्भ जोड़ा (संदर्भ> ब्राउज़ जोड़ें)।अंत में मैंने नए संदर्भ गुणों को खोला और Embed Interop TypesTrue पर सेट किया।

यह एक बेहतर स्थिति प्रतीत होता है। मुझे असेंबली के एक हस्ताक्षरित संस्करण के बारे में चिंता करने की आवश्यकता नहीं है।

+0

अच्छी जानकारी, निक। मैं यह जानने के लिए कि कौन से वर्ग डीएल को संदर्भित करते हैं, मेरे उत्तर में आपके उत्तर का उल्लेख करने जा रहा हूं। –

+0

यदि आप 'True' में 'एम्बेड इंटरप प्रकार प्रकार' सेट करते हैं, तो क्या अभी भी stdole.dll की आवश्यकता है? मेरे ऐप को अब इसकी आवश्यकता नहीं है। –

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