मेरे पास मेरे विज़ुअल स्टूडियो समाधान में चार परियोजनाएँ हैं (हर कोई .NET 3.5 को लक्षित करता है) - मेरी समस्या के लिए केवल ये दो महत्वपूर्ण हैं:
- MyBaseProject <- यह क्लास लाइब्रेरी एक तृतीय-पक्ष DLL फ़ाइल (elmah.dll) का संदर्भ देती है
- MyWebProject1 <- इस वेब एप्लिकेशन प्रोजेक्ट में MyBaseProject का संदर्भ है
मैं करने के लिए elmah.dll संदर्भ जोड़ा MyBaseProject क्लिक करके विजुअल स्टूडियो 2008 में "संदर्भ जोड़ें ..." → "ब्राउज़" टैब → "elmah.dll" का चयन।
एल्माह संदर्भ के गुण निम्नानुसार हैं:
- उपनाम - वैश्विक
- स्थानीय कॉपी करें - सच
- संस्कृति -
- विवरण - ASP.NET के लिए त्रुटि लॉगिंग मॉड्यूल और हैंडलर (ELMAH)
- फ़ाइल प्रकार - विधानसभा
- पथ - D: \ webs \ otherfolder \ _myPath \ __ उपकरण \ elmah \ Elmah.dll
- संकल्प - सत्य
- रनटाइम संस्करण - v2.0.50727
- निर्दिष्ट संस्करण - असत्य
- प्रबल नाम - असत्य
- संस्करण - 1.0.11211.0
में MyWebProject1 मैं द्वारा परियोजना MyBaseProject के संदर्भ में कहा: → "परियोजनाओं" टैब → "MyBaseProject" का चयन "संदर्भ जोड़ें ..."। इस संदर्भ के गुण निम्नलिखित सदस्यों को छोड़कर समान हैं:
- विवरण -
- पथ - D: \ webs \ CMS \ MyBaseProject \ bin \ Debug \ MyBaseProject.dll
- संस्करण - 1.0.0.0
यदि मैं Visual Studio में बिल्ड चलाता हूँ, तो elmah.dll फ़ाइल MyBaseProject.dll के साथ मेरे MyWebProject1 के बिन डायरेक्टरी में कॉपी की जाती है !
हालाँकि अगर मैं MSBuild को हल के लिए (D: \ webs \ CMS> C: \ WINDOWS \ Microsoft.NET \ Framework \ v3.5 \ MSBuild.exe / t: ReBuild / p): कॉन्फ़िगरेशन = डीबग MyProject.sln के माध्यम से साफ़ और चलाता हूँ। ) MymebProject1 की बिन डायरेक्टरी में elmah.dll गायब है - हालांकि बिल्ड में स्वयं कोई चेतावनी या त्रुटियां नहीं हैं!
मैंने पहले ही सुनिश्चित कर लिया है कि MyBaseProject के .csproj में "true" मान के साथ निजी तत्व है (जो कि Visual Studio में " स्थानीय प्रतिलिपि बनाएँ " के लिए एक उपनाम होना चाहिए ):
<Reference Include="Elmah, Version=1.0.11211.0, Culture=neutral, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\mypath\__tools\elmah\Elmah.dll</HintPath>
**<Private>true</Private>**
</Reference>
(निजी टैग डिफ़ॉल्ट रूप से .csproj के xml में प्रकट नहीं हुआ था, हालांकि विज़ुअल स्टूडियो ने कहा कि "स्थानीय कॉपी करें" सच। मैंने "लोकल कॉपी" को झूठा - सहेजा - और इसे फिर से सच पर वापस सेट कर दिया - सेव!)
MSBuild के साथ क्या गलत है? मैं (elmah.dll) संदर्भ को MyWebProject1 के बिन में प्रतिलिपि कैसे प्राप्त करूं?
मैं हर प्रोजेक्ट के पोस्टबिल्ड कमांड में एक पोस्टबिल्ड कॉपी एक्शन जोड़ना नहीं चाहता! (कल्पना करें कि मेरे पास कई प्रोजेक्ट्स MyBaseProject पर निर्भर होंगे!)