पर x86 और x64 लाइब्रेरी जोड़ना मैंने एक लाइब्रेरी बनाई है जो सीईएफशर्प पर निर्भर करता है जिसके लिए विशिष्ट प्लेटफ़ॉर्म के लिए लाइब्रेरी बनाने की आवश्यकता होती है। तो कोई भी एसीसीपीयू समर्थन नहीं।NuGet पैकेज
अब मैं इसे एक NuGet में पैक करना चाहता हूं। जहां तक मैं समझता हूं कि आपको इन फ़ाइलों को बिल्ड फ़ोल्डर में रखना है और .targets
फ़ाइल है जो संदर्भ के लिए सही डीएल चुनती है। तो मैं एक NuGet पैकेज इस तरह लग रही के साथ समाप्त हो गया: अब तक
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<Target Name="PlatformCheck" BeforeTargets="InjectReference"
Condition="(('$(Platform)' != 'x86') AND ('$(Platform)' != 'x64'))">
<Error Text="$(MSBuildThisFileName) does not work correctly on '$(Platform)' platform. You need to specify platform (x86 or x64)." />
</Target>
<Target Name="InjectReference" BeforeTargets="ResolveAssemblyReferences">
<ItemGroup Condition="'$(Platform)' == 'x86' or '$(Platform)' == 'x64'">
<Reference Include="MyLib">
<HintPath>$(MSBuildThisFileDirectory)$(Platform)\MyLib.dll</HintPath>
</Reference>
</ItemGroup>
</Target>
</Project>
तो अच्छा:
lib
monodroid
MyLib.dll
xamarin.ios10
MyLib.dll
net45
MyLib.dll (x86)
build
net45
x86
MyLib.dll (x86)
x64
MyLib.dll (x64)
MyLib.targets
मैं .targets
फ़ाइल के निम्नलिखित के अंदर डाल दिया। अब समस्या के लिए।
<Reference Include="MyLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=d64412599724c860, processorArchitecture=x86">
<HintPath>..\packages\MyLib.0.0.1\lib\net45\MyLib.dll</HintPath>
<Private>True</Private>
</Reference>
हालांकि मैं .targets
फाइल के बारे में उल्लेख किया कुछ भी नहीं दिख रहा है: जब एक नया WPF परियोजना को यह NuGet जोड़ने, मैं पुस्तकालय के लिए संदर्भ की तरह .csproj
फ़ाइल में प्रदर्शित होने को देखते हैं। क्या यह अभी भी NuGet 3 के साथ ऐसा करने का तरीका है? क्या मैंने कुछ गलत किया? X86 lib के संदर्भ के कारण x64 चलते समय वर्तमान में यह रनटाइम पर विफल रहता है।
यदि आपको प्रोजेक्ट.जेसन का उपयोग करने वाली नई विंडोज 10 परियोजनाओं का समर्थन करने की आवश्यकता नहीं है, तो मैं lib \ Net45 निर्देशिका को हटाने का प्रयास करूंगा। NuGet को एक WPF प्रोजेक्ट में स्थापित करना चाहिए और प्रोजेक्ट फ़ाइल (.csproj) में .targets फ़ाइल आयात करें। –
मैं यूडब्ल्यूपी या किसी भी नई परियोजनाओं का समर्थन करने की योजना नहीं बना रहा जो नई परियोजना.जेसन सामग्री का उपयोग करता है। कल फिर से प्रयास करेंगे। हालांकि, अभी भी परेशान नहीं है कि csproj फ़ाइल में संदर्भित लक्ष्यों को न देखे जहां nuget जोड़ा गया था। – Cheesebaron
मैंने lib \ net45 फ़ोल्डर को हटाने का प्रयास किया, जिसने इसे बनाने के अलावा कुछ भी नहीं किया क्योंकि यह डीएल नहीं मिला। – Cheesebaron