किसी csproj फ़ाइल में इस दो का उद्देश्य है (VS2017) व्याख्या कर सकते हैं:नेट कोर RuntimeIdentifier बनाम TargetFramework
<TargetFramework>netstandard1.6</TargetFramework>
<RuntimeIdentifier>win7</RuntimeIdentifier>
मैं सिर्फ VS2015 से पलायन और अब मेरी वेब एपीआई प्रकाशित नहीं कर सकते क्योंकि ऐसा लगता है मैं चाहिए केवल एक लक्ष्य ढांचे का उपयोग करें। इसके अलावा मैं कई आरआईडी निर्दिष्ट नहीं कर सकता। ये सभी बदली हुई चीजें मुझे निराश करती हैं। खरोंच से कुछ भी काम नहीं करता है, कुछ खत्म हो जाना चाहिए।
मैं सिर्फ विंडोज़ पर अपना वेब-एपीआई विकसित करना चाहता हूं, यहां xUnit परीक्षण चलाएं और फिर लिनक्स (उबंटू) सर्वर पर चलाने के लिए वेब-एपीआई को तैनात करें। मुझे csproj में दोनों पैरामीटर में क्या रखना चाहिए? अच्छी व्याख्या के साथ लिंक अत्यधिक सराहना की है।
Update1
मैं संदर्भित .net मुख्य लाइब्रेरीज के साथ वेब एपीआई की है। सब कुछ जहां वीएस2015 से माइग्रेट किया गया। अब रूट प्रोजेक्ट में मेरे पास <TargetFrameworks>netcoreapp1.1;net461</TargetFrameworks>
है। जब मैं VS2017 के माध्यम से प्रकाशित मैं त्रुटि मिली:
C:\Program Files\dotnet\sdk\1.0.3\Sdks\Microsoft.NET.Sdk\buildCrossTargeting\Microsoft.NET.Sdk.targets(31,5): error : The 'Publish' target is not supported without specifying a target framework. The current project targets multiple frameworks, please specify the framework for the published application.
लेकिन मैं लक्ष्य ढांचे में netcoreapp1.1
के रूप में प्रकाशित निर्दिष्ट किया है। ठीक है। फिर मैंने नीचे दिए गए अनुसार <PropertyGroup Condition="$(TargetFramework)'=='netcoreapp1.1'"> <RuntimeIdentifier>ubuntu.16.10-x64</RuntimeIdentifier> </PropertyGroup>
के साथ अपना csproj अपडेट किया। लेकिन अब मैं भी ऐप्लिकेशन का निर्माण नहीं कर सकते, त्रुटि मिलती है:
5>C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.targets(92,5): error : Assets file '\obj\project.assets.json' doesn't have a target for '.NETCoreApp,Version=v1.1/ubuntu.16.10-x64'. Ensure you have restored this project for TargetFramework='netcoreapp1.1' and RuntimeIdentifier='ubuntu.16.10-x64'.
मैं सिर्फ खिड़कियों 8.1/windows7 पर VS2017 के साथ विकसित करना चाहते हैं और 16.10 Ubuntu को तैनात। मैं क्या गलत कर रहा हूँ?
Update2
मैं समाधान में 8 परियोजनाएं हैं। उनमें से 3 xUnit परीक्षण हैं। इस प्रकार हमारे पास 5 परियोजनाएं हैं। इनमें से 4 कक्षा पुस्तकालय हैं और 1 मेरा वेब-ऐप है। सभी 4 वर्ग पुस्तकालयों इस है:
<TargetFrameworks>netstandard1.6;net461</TargetFrameworks>
<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
मेरे वेब अनुप्रयोग:
<TargetFrameworks>netcoreapp1.1;net461</TargetFrameworks>
<ItemGroup Condition=" '$(TargetFramework)' == 'net461' ">
<Reference Include="System" />
<Reference Include="Microsoft.CSharp" />
</ItemGroup>
मेरा वेब-ऐप को प्रकाशित करने? win7
से win7-x64
या win7-x86
के लिए उचित छुटकारा docs
पहले परिवर्तन में
' netstandard1.0; net451 TargetFrameworks> जब वह नेट स्टैंडर्ड का उपयोग कर' अनावश्यक है। आप कई पुरानी प्रथाओं का उपयोग कर रहे हैं –
मैंने कोशिश की और यह मेरे लिए काम नहीं करता है। प्रश्न पर मेरे अपडेट देखें। – Alezis
@Alezis: संदेश पढ़ें;) जब आपके पास 1 से अधिक लक्ष्य हैं, तो आपको प्रकाशित करने के लिए कौन सा संस्करण 'डॉटनेट प्रकाशित' कहना होगा। https://docs.microsoft.com/en-us/dotnet/articles/core/tools/dotnet-publish, i.e. 'dotnet publ --runtime ubuntu.16.10-x64'। इसके अलावा 'netstandard1.0; net451'' net451' अप्रचलित है (चूंकि नेट नेटवर्क्स 1.0' .NET 4.5 और उच्चतर पर चलता है। लेकिन यदि आप केवल 1.3 (.NET 4.6) में उपलब्ध सुविधाओं का उपयोग करते हैं, तो 'netstandard1.3 ; net451' का उपयोग दो बिल्ड बनाने के लिए किया जा सकता है। https://docs.microsoft.com/en-us/dotnet/articles/standard/library – Tseng