2016-01-20 2 views
5

मैं एक अजीब, गैर-आदर्श परियोजना/समाधान वास्तुकला से निपट रहा हूं और मैं यह जानने की कोशिश कर रहा हूं कि क्या आवश्यक है उसे पूरा करने का कोई तरीका है। मेरी स्थिति इस प्रकार है:विजुअल स्टूडियो रिलीज बिल्ड के दौरान/bin/debug/में अनसुलझा प्रोजेक्ट संदर्भों को क्यों देखता है?

मैं सॉफ्टवेयर पर काम कर रहा हूं जो दो समाधानों में टूट गया है, जिसे मैं SolutionOne.sln (जो वीएस 2010 के तहत बनाता है) और SolutionTwo.sln (जो वीएस 2013 के तहत बनाता है) को कॉल करेगा। SolutionOne, हम निम्नलिखित परियोजनाएं हैं:

SolutionOne.sln

  • A.csproj
  • B.csproj
  • C.csproj (includes reference to B.csproj)

SolutionTwo में, हम कई परियोजनाओं जो SolutionTwo के लिए अद्वितीय हैं है, लेकिन हम भी SolutionOne से 'सी' परियोजना सहित रहे हैं - लेकिन नहीं परियोजना बी (क्योंकि इस न्यूनतम उदाहरण के बाहर, वास्तव में कई और जंजीर संदर्भ हैं और जब तक हम उन्हें सभी शामिल करते हैं, यह मूल रूप से समाधान का बहुमत होगा)। मैं समझता हूं कि इसका मतलब है कि जब हम SolutionTwo खोलते हैं, तो "सी" प्रोजेक्ट "बी" प्रोजेक्ट का एक अनसुलझा संदर्भ दिखाता है, क्योंकि यह हमारे दूसरे समाधान में शामिल नहीं है।

हालांकि: जब तक मैं सॉल्यूशन दो से पहले समाधान बनाउंगा, डीबग कॉन्फ़िगरेशन में, बिल्ड सफल होते हैं और हमारा ऐप कार्यात्मक होता है। ऐसा लगता है कि निर्माण समय पर, विजुअल स्टूडियो सॉल्यूशनऑन बिल्ड में उनके स्थानों से अनुपलब्ध "बी" प्रोजेक्ट संदर्भ के लिए निर्मित डीएलएल को पकड़ने के लिए पर्याप्त स्मार्ट है, क्योंकि ये दो समाधान रूट निर्देशिका साझा करते हैं। हालांकि, जब मैं उनके रिलीज विन्यास में दोनों समाधान बनाने की कोशिश, मैं निम्नलिखित त्रुटि मिलती है:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\Microsoft.CSharp.targets(316,9): error MSB3104: The referenced assembly "[path to project]\bin\debug[ProjectReferenceName].dll" was not found. If this assembly is produced by another one of your projects, please make sure to build that project before building this one.

ध्यान दें कि त्रुटि संदेश में, यह सही बिन फ़ोल्डर में जांच करती प्रतीत होती है, लेकिन यह में रहा है/डिबग उपनिर्देशिका के बजाए/रिलीज करें, भले ही दोनों समाधान उनकी रिलीज कॉन्फ़िगरेशन के साथ निर्माण कर रहे हों।

मैं समझता हूं कि यह परियोजना/समाधान संबंधों का आदर्श उपयोग नहीं है, लेकिन यह बेहद असंभव है कि मैं इस चरण में इस तरह से डिजाइन किए जा सकने वाले तरीके को पुनर्गठित कर सकता हूं। क्या कोई तरीका है कि मैं रिलीज को/bin/release/directory में गैर-संकल्पित परियोजना संदर्भ DLL को ठीक से देखने के लिए बनाता हूं, जैसा कि मैं अपेक्षा करता हूं?

+0

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

+0

@ क्रिसिस, हाँ, यह बिल्कुल बताता है कि मैं क्या देख रहा हूं। मैं बस सोच रहा हूं कि क्या आप यह सोचने में सही हैं कि यह एक बग है (जैसा कि मैं भी सोच रहा हूं), या व्यवहार को कॉन्फ़िगर करने का कोई तरीका है। धन्यवाद! –

उत्तर

0

अपनी सी.csproj फ़ाइल की जांच करें।

आप एक हार्ड-कोडेड पथ स्पष्ट संदर्भ देता है जो \ बिन \ डिबग \

संपादित करें द्वारा B.dll संदर्भित किया जा सकता है: @sphanley: उस मामले में, B.csproj की जाँच करें। सत्यापित करें कि रिलीज आउटपुटपाथ सही ढंग से सेटअप है। कुछ की तरह:

<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Release|AnyCPU'"> 
    <PlatformTarget>AnyCPU</PlatformTarget> 
    <OutputPath>bin\Release\</OutputPath> 
    <DefineConstants>RELEASE</DefineConstants> 
    <Optimize>true</Optimize> 
    </PropertyGroup> 
+0

संदर्भ एक प्रोजेक्ट संदर्भ है, असेंबली संदर्भ नहीं है, और .csproj में निर्दिष्ट कोई पथ नहीं है। यही कारण है कि यह मेरे लिए इतना अजीब लगता है। मुझे लगता है कि यह इसे डीबग या रिलीज में नहीं मिलेगा, या इसे दोनों में ढूंढ पाएगा। –

0

सुनिश्चित करें कि आपके बिल्ड करें - कॉन्फ़िगरेशन मैनेजर के सक्रिय समाधान विन्यास जारी करने की तैयारी कर रहा है और स्तंभ बिल्ड सभी समाधान में प्रत्येक परियोजना के लिए उन पर checkmarks है।

+0

इन दोनों चीजों को सत्यापित किया गया है - यह निश्चित रूप से सही कॉन्फ़िगरेशन के साथ प्रासंगिक परियोजनाओं का निर्माण कर रहा है। यह बस/bin/release फ़ोल्डर में बिल्डिंग कर रहा है, फिर डीएलएल को/bin/डीबग में ढूंढ रहा है। –

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