2016-01-05 8 views
7

मैं एक सार्वभौमिक विंडोज प्लेटफ़ॉर्म लाइब्रेरी कैसे पैकेज करूं जो विजुअल स्टूडियो एक्सटेंशन एसडीके पर निर्भर करता है जैसे कि Microsoft Player Framework?यूनिवर्सल विंडोज प्लेटफार्म को लक्षित करने वाली .NET लाइब्रेरी को कैसे पैकेज करें और विजुअल स्टूडियो एक्सटेंशन एसडीके पर निर्भर करता है?

विशेष रूप से, मैं चाहता हूं कि मैं अपनी लाइब्रेरी के उपयोगकर्ताओं को अपनी परियोजनाओं में एक्सटेंशन एसडीके मैन्युअल रूप से जोड़ने के बिना, NuGet में इंस्टॉल बटन दबाकर तुरंत इसका उपयोग कर सकूं। मान लीजिए, उचित विस्तार एसडीके वास्तव में स्थापित हैं।

:

यह सवाल और जवाब है कि आधुनिक NuGet पैकेज संलेखन के विषय पर मेरी निष्कर्ष दस्तावेज़, NuGet 3. साथ किए गए बदलावों पर विशेष रूप से ध्यान केंद्रित कर तुम भी कुछ संबंधित प्रश्नों में रुचि हो सकती की एक श्रृंखला है

+0

साइड नोट: आपके प्रश्न/उत्तर जोड़े ने नोट किया और [इस मेटा प्रश्न] का कारण बन गया [http://meta.stackoverflow.com/questions/314088/posting-series-questions-and-answering-them-yourself) – rene

उत्तर

5

इस उत्तर principles of .NET Framework library packaging और principles of Universal Windows Platform library packaging पर बनाता है। निम्नलिखित को बेहतर ढंग से समझने के लिए पहले लिंक किए गए उत्तरों को पढ़ें।

आप सीधे एक परियोजना में एक दृश्य स्टूडियो विस्तार एसडीके संदर्भ है, यह स्निपेट .csproj फ़ाइल में शामिल है:

<SDKReference Include="Microsoft.PlayerFramework.Xaml.UWP, Version=3.0.0.2"> 
    <Name>Microsoft Player Framework</Name> 
</SDKReference> 

NuGet कि एक बराबर कार्रवाई जब एक NuGet स्थापित करने के लिए सक्षम बनाता प्रदर्शन की कार्यक्षमता प्रदान करता है पैकेज। सबसे पहले आपको अपनी परियोजना में एक .targets फ़ाइल (उदा। MyLibraryUsingExtensionSdk.targets) बनाना है जिसमें उस प्रोजेक्ट में जोड़ा जाने वाला प्रासंगिक XML शामिल है जिसमें आपकी लाइब्रेरी स्थापित है। आप अपनी लाइब्रेरी की .csproj फ़ाइल से संबंधित <SDKReference> तत्व की प्रतिलिपि बनाना चाहेंगे और किसी भी मूल तत्व को भी शामिल कर सकते हैं, जो एक पूर्ण XML दस्तावेज़ बना सकता है जिसे विलय किया जा सकता है।

<?xml version="1.0" encoding="utf-8"?> 
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> 
    <ItemGroup> 
     <SDKReference Include="Microsoft.PlayerFramework.Xaml.UWP, Version=3.0.0.2"> 
      <Name>Microsoft Player Framework</Name> 
     </SDKReference> 
    </ItemGroup> 
</Project> 

इस फ़ाइल की बिल्ड एक्शन को किसी भी को सेट करने के लिए सेट करें, ताकि इसे निर्माण प्रक्रिया द्वारा अनावश्यक रूप से छुआ जा सके।

इस लक्ष्य को शामिल करके। NuGet पैकेज संरचना में उपयुक्त स्थान में फ़ाइल लक्ष्य, यह स्वचालित रूप से रनटाइम पर आपकी लाइब्रेरी का उपयोग करने वाली परियोजनाओं में विलय हो जाएगा। कि दृश्य स्टूडियो पूरी तरह से विस्तार पहचान करने के लिए एक समाधान पुनः लोड की आवश्यकता होगी

<?xml version="1.0"?> 
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd"> 
    <metadata minClientVersion="3.2"> 
     <id>Example.MyLibraryUsingExtensionSdk</id> 
     <version>1.0.0</version> 
     <authors>Firstname Lastname</authors> 
     <description>Example of a simple UWP library that depends on an extension SDK.</description> 
    </metadata> 
    <files> 
     <!-- Causes referencing this NuGet package to also automatically reference the relevant extension SDKs. --> 
     <file src="MyLibraryUsingExtensionSdk.targets" target="build\uap10.0\MyLibraryUsingExtensionSdk.targets" /> 

     <file src="..\bin\Release\MyLibraryUsingExtensionSdk**" target="lib\uap10.0" /> 
    </files> 
</package> 

नोट:

+---build 
| \---uap10.0 
|   MyLibraryUsingExtensionSdk.targets 
| 
\---lib 
    \---uap10.0 
     | MyLibraryUsingExtensionSdk.dll 
     | MyLibraryUsingExtensionSdk.pdb 
     | MyLibraryUsingExtensionSdk.pri 
     | MyLibraryUsingExtensionSdk.XML 
     | 
     \---MyLibraryUsingExtensionSdk 
       ExampleControl.xaml 
       MyLibraryUsingExtensionSdk.xr.xml 

आप निम्न .nuspec टेम्पलेट का उपयोग कर इस तरह के एक पैकेज बना सकते हैं: आप निम्नलिखित पैकेज संरचना हासिल करना चाहते हैं ऐसे NuGet पैकेज को स्थापित करने के बाद एसडीके। निर्माण बिना किसी समस्या के तुरंत काम करेगा लेकिन इंटेलिसेन्स एक पुनः लोड होने तक नया एक्सटेंशन एसडीके नहीं उठाएगा।

दुर्भाग्य से, इस दृष्टिकोण के लिए आपको एक्सटेंशन एसडीके के संस्करण संख्या को हार्डकोड करने की आवश्यकता होती है, जो समस्याग्रस्त हो सकती है। लेखन के समय, मुझे संस्करणों की एक श्रृंखला या संस्करण-स्वतंत्र संदर्भ निर्दिष्ट करने का कोई तरीका नहीं पता है।

NuGet पैकेज बनाने से पहले रिलीज कॉन्फ़िगरेशन का उपयोग करके अपना समाधान बनाना याद रखें।

एक नमूना पुस्तकालय और प्रासंगिक पैकेजिंग फ़ाइलें available on GitHub हैं। इस उत्तर से संबंधित समाधान UwpLibraryDependingOnExtensionSdks है।

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