2012-08-24 35 views
5

हमारे पास एक दृश्य स्टूडियो पैकेज (वीएस पैकेज) है जो क्लास लाइब्रेरी प्रोजेक्ट (प्रोजेक्ट ए) का संदर्भ देता है। प्रोजेक्ट ए बदले में एक और कक्षा लाइब्रेरी प्रोजेक्ट (प्रोजेक्ट बी) संदर्भित करता है।वीएसआईएक्स पैकेज में संदर्भित परियोजना की निर्भरता शामिल नहीं है

तो निर्भरता संरचना इस तरह दिखता है: वी.एस. पैकेज> प्रोजेक्ट ए> परियोजना बी

सभी परियोजनाओं को एक ही समाधान के अंदर मौजूद हैं और निर्भरता उचित परियोजना संदर्भ के रूप में स्थापित किए गए हैं।

यदि मैं विजुअल स्टूडियो में पैकेज बनाता हूं और बिन/डीबग फ़ोल्डर में देखता हूं तो सभी आवश्यक असेंबली प्रोजेक्ट बी सहित हैं। हालांकि जब पैकेज तैनात किया जाता है, केवल प्रोजेक्ट ए की असेंबली मौजूद होती है और प्रोजेक्ट बी गुम होती है। पैकेज में प्रोजेक्ट बी की अप्रत्यक्ष निर्भरता को शामिल करने के लिए मैं दृश्य स्टूडियो कैसे कहूं?

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

हालांकि मुझे लगता है कि यह मामला बस नहीं है।

मेरा प्रश्न this one के समान है, सिवाय इसके कि मुझे मुख्य परियोजना असेंबली में समस्या है और स्थानीयकरण उपग्रह असेंबली नहीं है। इस अन्य पोस्ट में जवाब मेरे लिए काम नहीं करता है क्योंकि ऐसा लगता है कि यह उपग्रह असेंबली के लिए ही काम करता है।

क्या कोई अन्य आउटपुट समूह है जिसे मैं अप्रत्यक्ष निर्भरताओं को शामिल करने के लिए पैकेज को निर्देशित करने के लिए निर्दिष्ट कर सकता हूं?

देखने के लिए धन्यवाद।

+0

मैं इस repro करने के लिए सक्षम नहीं था। क्या आप सुनिश्चित हैं कि VSPackage -> ProjectA और ProjectA -> ProjectB से स्रोत-स्तर निर्भरता है (यानी।ProjectA में एक प्रकार ProjectB से एक प्रकार का उपयोग करता है)? –

+0

@AaronMarten उत्तर के लिए धन्यवाद .. हाँ कोड में स्रोत स्तर निर्भरता है। परियोजना संदर्भों में से किसी एक को हटाने से निर्माण त्रुटियों का कारण बनता है जहां संदर्भित कक्षाएं अब नहीं मिल सकती हैं। मैंने एक साधारण समाधान बनाया है जो मेरे लिए समस्या प्रदर्शित करता है, इसे डाउनलोड किया जा सकता है [यहां] (http://www.gogofile.com/Default.aspx?p=sc&ID=634817287005530000_4331) – Martyn

उत्तर

3

इस विशेष मामले में करने की सबसे सरल बात VSPackage प्रोजेक्ट से संदर्भ बी है और संकलन-समय निर्भरता को पेश करने से बचने के लिए "संदर्भ आउटपुट असेंबली" संपत्ति को गलत पर सेट करें। मेरे वी.एस. पैकेज परियोजना एक और वी.एस. पैकेज परियोजना संदर्भित (~ प्रोजेक्ट ए) जो बदले में अन्य परियोजनाओं का एक समूह (~ परियोजना बी) हमारे विस्तार के मांस युक्त संदर्भित:

+0

हां यह स्पष्ट समाधान है और है यह अल्पकालिक में काम करने के लिए मैंने क्या किया है। हालांकि, मैं इसके निचले हिस्से तक पहुंचना चाहता हूं और समझना चाहता हूं कि यह क्यों काम नहीं कर रहा है। क्या आपने उदाहरण समाधान के साथ परीक्षण किया था जिसे मैंने अपलोड किया था? – Martyn

1

मैं एक ऐसी ही समस्या थी ।

इस जवाब से प्रेरित होकर: VSIX package doesn't include localized resources of referenced assembly, मैं 'BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup' संदर्भ के Output Groups Included in VSIX संपत्ति के लिए से वी.एस. पैकेजप्रोजेक्ट ए को जोड़ा गया।

यह मेरा वी.एस. परियोजना के लिए ...\Debug\ फ़ोल्डर में सभी निर्भरता DLLs छोड़ने का प्रभाव था, लेकिन वे अभी भी VSIX में शामिल नहीं हुए।

अंत में मैं चला गया और मेरी परियोजना बी एस से प्रत्येक के लिए एक मेरी परियोजना से सभी संदर्भों को BuiltProjectOutputGroup;BuiltProjectOutputGroupDependencies;GetCopyToOutputDirectoryItems;SatelliteDllsProjectOutputGroup झंडे जोड़ा - तो वे सब VSIX में शामिल हो गया।

(BTW यह विजुअल स्टूडियो 2013 के साथ साथ है, लेकिन यह परिवर्तन बहुत है करने के लिए 2010 से प्रतीत नहीं होता)