2016-05-23 8 views
5

मैं विजुअल स्टूडियो 2015 का उपयोग कर एक सी # एप्लिकेशन लिख रहा हूं। यह एप्लिकेशन "कोई भी सीपीयू" लक्षित करता है ("32-बिट पसंद करें" विकल्प सक्षम किए बिना), जिसका अर्थ यह है कि एप्लिकेशन एक एकल निर्माण लक्ष्य को संकलित करता है जो 32-बिट में चलाएगा 64-बिट ऑपरेटिंग सिस्टम पर 64-बिट ऑपरेटिंग सिस्टम और 64-बिट मोड पर मोड।डेवलपर के ऑपरेटिंग सिस्टम आर्किटेक्चर पर सशर्त स्टूडियो सशर्त में फ़ाइल की प्रतिलिपि कैसे करें?

इस एप्लिकेशन को यह आवश्यक है कि एक निश्चित देशी डीएलएल को इसके आउटपुट फ़ोल्डर (यानी, बिन/डीबग या बिन/रिलीज फ़ोल्डर) में कॉपी किया जाए। इस डीएलएल के अलग-अलग x86 और x64 संस्करण हैं, और डेवलपर के ऑपरेटिंग सिस्टम के आधार पर सही फ़ोल्डर को आउटपुट फ़ोल्डर में कॉपी करने की आवश्यकता है।

अब तक मैं समझ गए होंगे कि मैं उत्पादन फ़ोल्डर में प्रतिलिपि फ़ाइलों सशर्त मेरे .csproj फ़ाइल के लिए निम्न की तरह कुछ जोड़कर कर सकते हैं: मुझे क्या करना

<ItemGroup Condition="MY CONDITION HERE"> 
    <Content Include="MyNativeLib.dll"> 
     <CopyToOutputDirectory>Always</CopyToOutputDirectory> 
    </Content> 
</ItemGroup> 

तो मेरे सवाल है, कैसे "डेवलपर ऑपरेटिंग सिस्टम x86" या "... x64" के बराबर एक शर्त लिखें?

(सुपर स्पष्ट, मैं नहीं पूछ मंच का निर्माण लक्ष्य है, जो मेरे मामले में हमेशा "कोई भी सीपीयू" है पर सशर्त एक फाइल कॉपी करने के लिए कैसे कर रहा हूँ। मैं कैसे सशर्त एक फ़ाइल की प्रतिलिपि करने पूछ रहा हूँ होना करने के लिए । ओएस वास्तुकला जिस पर दृश्य स्टूडियो चल रहा हो होता है पर एक जोड़े को सही दिशा में मुझे उस ऊपर मूल प्रश्न के लिए उपयोगी टिप्पणी निर्भर करता है)

+0

मैं इसे पोस्ट बिल्ड इवेंट में ठीक से करूँगा। –

+0

@ एलानएस। हंसन हाँ, यह मेरा पहला वृत्ति था (मैं पहले से ही अन्य फाइलों के समूह की प्रतिलिपि बनाने के लिए पोस्ट-बिल्ड का उपयोग करता हूं); पोस्ट-बिल्ड इवेंट्स में * सशर्त रूप से * फाइलों की प्रतिलिपि बनाने के बारे में मुझे कोई सुझाव नहीं मिला, ओएस आर्किटेक्चर पर सशर्त कभी नहीं। अगर कोई मुझे बता सकता है कि पोस्ट-बिल्ड इवेंट में ऐसा कैसे किया जाए, तो यह 100% स्वीकार्य होगा! –

+0

इसे देखें: http://stackoverflow.com/questions/3832552/condically-use-32-64-bit-reference-when-building-in-visual-studio – Alex

उत्तर

1

धन्यवाद इशारा किया, मैं समझ गए होंगे कि यह कैसे हल करने के लिए:

मैंने फ़ाइल को पोस्ट-बिल्ड इवेंट में कॉपी करने का निर्णय लिया और PROCESSOR_ARCHITECTURE और PROCESSOR_ARCHITEW6432 पर्यावरण चरों को जांचने के लिए बैच स्क्रिप्ट कमांड का उपयोग किया।

set isX64=FALSE 
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set isX64=TRUE 
if "%PROCESSOR_ARCHITEW6432%"=="AMD64" set isX64=TRUE 
if "%isX64%"=="TRUE" (
    echo "Copying x64 dependencies..." 
    copy "$(ProjectDir)Dependencies\x64\MyNativeLib.dll" "$(TargetDir)" 
) ELSE (
    echo "Copying x86 dependencies..." 
    copy "$(ProjectDir)Dependencies\x86\MyNativeLib.dll" "$(TargetDir)" 
) 

मुमकिन है मैं भी मैं के रूप में .csproj फ़ाइल में इन वातावरण चर इस्तेमाल कर सकते हैं: (। इन चरों पर अधिक जानकारी here)

यहाँ कैसे के बाद निर्माण की घटनाओं में यह करने के लिए का एक उदाहरण है मूल प्रश्न में करने के बारे में सोचा, लेकिन पोस्ट-बिल्ड इवेंट में ऐसा करना मेरे लिए थोड़ा आसान और स्पष्ट लग रहा था, और मैं पहले से ही कुछ अन्य फाइलों की प्रतिलिपि बनाने के लिए पोस्ट-बिल्ड का उपयोग कर रहा था।

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