आप मैन्युअल रूप से संपादित करने के लिए प्रोजेक्ट फ़ाइल और ऐड की जरूरत रों डिफ़ॉल्ट TargetFramework और मूल रूप से करने के लिए बदल TargetFrameworks । तब आप एक के साथ मॉनीकर का उल्लेख करते हैं ; विभाजक।
इसके अलावा आप मैन्युअल रूप से एक सशर्त ItemGroup में या VS Nuget पैकेज प्रबंधक का उपयोग करके Nuget पैकेज संदर्भ रख सकते हैं।
यहाँ आपका .csproj कैसा दिखना चाहिए:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.6;net452</TargetFrameworks>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net452'">
<PackageReference Include="Microsoft.Azure.DocumentDB">
<Version>1.12.0</Version>
</PackageReference>
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard1.6'">
<PackageReference Include="Microsoft.Azure.DocumentDB.Core">
<Version>1.1.0</Version>
</PackageReference>
</ItemGroup>
</Project>
एक अन्य समस्या यह है कि मैं इन दिनों लापता प्रलेखन के कारण ऐसा कर रहा हूं कि मैं VS2015 में एक प्रोजेक्ट बनाता हूं और प्रोजेक्ट का निर्माण करता हूं। उपलब्ध दस्तावेज और इंटेलीजेंस का उपयोग करके, फिर VS2017 में समाधान खोलें और अंतर्निहित अपग्रेड का उपयोग करें। फिर मैं csproj फाइल को देख कर पता लगाऊंगा कि विन्यास कैसे होता है।
एक मोनीकर के बिना बहु-लक्ष्यीकरण और अधिक गूढ़ लक्ष्य :
माइक्रोसॉफ्ट:
पीसीएल अनुशंसित नहीं हैं +
हालांकि PCL का समर्थन किया जाता है, पैकेज लेखकों को इसके बजाय netstandard का समर्थन करना चाहिए। .NET प्लेटफ़ॉर्म स्टैंडर्ड PCLs का एक विकास है और प्लेटफ़ॉर्म पर बाइनरी पोर्टेबिलिटी का प्रतिनिधित्व करता है जो एक एकल मॉनीकर का उपयोग करता है जो पोर्टेबल-ए + बी + सी मॉनीकर्स जैसे स्थिर से बंधा नहीं है।
यदि आप एक पोर्टेबल प्रोफ़ाइल को लक्षित करना चाहते हैं, तो इसमें एक पूर्वनिर्धारित moniker नहीं है TargetFrameworkIdentifier
, इसलिए पोर्टेबल प्रोफ़ाइल भी अवरूद्ध नहीं कर सकते TargetFrameworkVersion
, और TargetFrameworkProfile
। इसके अलावा एक संकलक स्थिरांक स्वचालित रूप से परिभाषित नहीं होता है। अंत में आपको सभी असेंबली संदर्भों को जोड़ना होगा, कोई भी डिफ़ॉल्ट रूप से प्रदान नहीं किया जाता है।
यह उदाहरण नीचे एक परियोजना से लिया गया है जो dynamic
कीवर्ड का उपयोग करता है इसलिए इसे Microsoft.CSharp
असेंबली की आवश्यकता है , इस प्रकार आप देख सकते हैं कि यह विभिन्न लक्ष्यों के लिए संदर्भ कैसे है।
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>netstandard1.5;net40;portable40-net45+sl5+win8+wp8</TargetFrameworks>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8+wp8'">
<TargetFrameworkIdentifier>.NETPortable</TargetFrameworkIdentifier>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<TargetFrameworkProfile>Profile158</TargetFrameworkProfile>
<DefineConstants>$(DefineConstants);PORTABLE158</DefineConstants>
</PropertyGroup>
<ItemGroup Condition="'$(TargetFramework)'=='netstandard1.5'">
<PackageReference Include="Microsoft.CSharp" Version="4.3.0" />
<PackageReference Include="System.ComponentModel" Version="4.3.0" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='net40'">
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)'=='portable40-net45+sl5+win8+wp8'">
<Reference Include="Microsoft.CSharp" />
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Windows" />
</ItemGroup>
</Project>