से .NET में संदर्भों के लिए CopyLocal (निजी) सेटिंग को ओवरराइड कैसे कर सकता हूं, मैं कुछ दिनों के लिए इसके साथ कुश्ती कर रहा हूं और कई खोजों के बाद मुझे वह रास्ता नहीं मिल रहा है जिस पर मुझे होना चाहिए।मैं MSBUILD
मैं जो करना चाहता हूं वह एक एमएसबीयूआईएलडीडी परियोजना स्थापित की गई है जो व्यक्तिगत परियोजना फाइलों से ओवरराइड की गई कई सेटिंग्स के साथ हमारे पूरे .NET एप्लिकेशन (8 समाधानों का गठन, और शायद 250 परियोजनाएं उनके बीच विभाजित) का निर्माण करेगी। खुद के लिए एक डीबग निर्माण करें।
विशेष रूप से मैं ऑप्टिमाइज़ेशन बंद और पूर्ण डीबग जानकारी/पीडीबी उत्पन्न के साथ हमारी रिलीज कॉन्फ़िगरेशन बनाना चाहता हूं। इसके अलावा, हमारे वर्तमान में अल्ट्रा-लम्बा निर्माण समय को कम करने के लिए, मैं प्रत्येक परियोजना के प्रत्येक संदर्भ के लिए "स्थानीय प्रतिलिपि" (या वास्तविक proj फ़ाइल xml में निजी) चाहता हूं।
पहली चीजें काफी आसान थीं, मैं एक परियोजना स्तर की संपत्ति को काफी आसानी से ओवरराइड कर सकता हूं (आप इसे एमएसबिल्ड कमांड लाइन से/पी का उपयोग करके भी कर सकते हैं), लेकिन मुझे यह नहीं पता कि संपत्ति को ओवरराइड करना है एक संदर्भ पर। मैंने स्टैक ओवरफ्लो और वेब पर कई चीजों को आजमाया है, लेकिन अभी तक कोई समाधान नहीं है।
मैं माइक्रोसॉफ्ट को बदलकर जो कर सकता हूं वह कर सकता हूं। कॉमन। लक्ष्य, _CopyFilesMarkedCopyLocal लक्ष्य में कोड को टिप्पणी करते हुए पूरी तरह से इन फ़ाइलों की प्रतिलिपि छोड़ देता है। लेकिन मैं अपनी वैश्विक विन्यास को बदलना नहीं चाहता हूं और इसे सभी परिस्थितियों में करना चाहता हूं। मैंने अपनी वैकल्पिक लक्ष्य फ़ाइल बनाई - जो काम करता है अगर मैं इसे इंगित करने के लिए एक व्यक्तिगत प्रोजेक्ट फ़ाइल बदलता हूं - लेकिन मैं यह नहीं समझ सकता कि इसे शीर्ष स्तर पर उपयोग करने के लिए कैसे निर्दिष्ट किया जाए (मेरी .proj फ़ाइल जो अभी बनाता है सभी 8 समाधान)। यह बहुत अच्छा होगा अगर मैं किसी भी तरह से शीर्ष स्तर पर केवल _CopyFilesMarkedCopyLocal लक्ष्य को ओवरराइड कर सकता हूं ताकि यदि एमएस डिफ़ॉल्ट लक्ष्य फ़ाइल को बदलता है तो मेरा निर्माण खराब नहीं होता है, लेकिन मैं यह नहीं समझ सकता कि यह काम कैसे किया जाए।
अगर वहाँ एक तरह से, जैसा कि आपने, स्तर गुण पेश कर सकती हैं पुनर्लेखन/बिल्ड लक्ष्य सामान ओवरराइड करने के लिए बिना संदर्भ के स्तर का गुण ओवरराइड करने के लिए सबसे अच्छा संभव था बात हो सकता है - लेकिन मैं यह दर्शाता है यह संभव है कोई जानकारी नहीं मिल गया है ।
इस पर किसी भी मदद के लिए अग्रिम धन्यवाद।
पीएस वास्तव में सभी परियोजनाओं के माध्यम से जाना और उन्हें बदलना मेरे लिए संभव नहीं है; मुझे ऐसे समाधान की आवश्यकता है जो मौजूदा कोड को जगह में छोड़ दे।
<Target Name="BeforeBuild">
<ItemGroup>
<ReferenceNew Include="@(Reference)">
<Private>False</Private>
</ReferenceNew>
<Reference Remove="@(Reference)"/>
<Reference Include="@(ReferenceNew)"/>
</ItemGroup>
</Target>
इस मेटाडाटा 'निजी' गलत पर सेट है, जो यह सुनिश्चित करेंगे कि संदर्भ नहीं करता है 'के लिए @ (संदर्भ) पुनः सूची जाएगा:
सेट CopyLocal = false तैनाती के समय के दौरान विभिन्न मुद्दों पैदा कर सकता है। मेरी ब्लॉग पोस्ट "डॉट नॉट चेंज" कॉपी करें स्थानीय "परियोजना संदर्भों को झूठी, संदर्भों को समझने तक।" (Http://geekswithblogs.net/mnf/archive/2012/12/09/do-not-change-copy-local -प्रोजेक्ट-संदर्भ-से-झूठी-जब तक .aspx) –
आपके प्रश्न का उत्तर नहीं देता है लेकिन उम्मीद है कि एमएस इसे मूल रूप से ठीक कर सकता है: https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/ 13280400-सुधार-दृश्य-स्टूडियो-बिल्ड-प्रदर्शन-बड़े – Mark