हमारे पास निरंतर निर्माण चल रहा है और एक डॉटनेट कोर ऐप को विंडोज़ सेवा के रूप में प्रकाशित करने का प्रयास कर रहे हैं। हम निम्नलिखित प्रकाशन प्रोफ़ाइल के साथ विजुअल स्टूडियो का उपयोग करके ऐसा कर सकते हैं

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <PublishProvider>FileSystem</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <TargetFramework>netcoreapp2.1</TargetFramework>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>
    <ProjectGuid>d655df5a-9266-470d-becd-6d62c919e961</ProjectGuid>
    <SelfContained>false</SelfContained>
    <_IsPortable>true</_IsPortable>
    <publishUrl>C:\publish\webapi</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
  </PropertyGroup>
</Project>

पहले तो हमने कम से कम प्रतिरोध का रास्ता अपनाया और कॉल करने की कोशिश की dotnet publish project /p:PublishProfile=<FolderProfileName>

इस कमांड ने प्रकाशन प्रोफाइल सेटिंग्स को नजरअंदाज कर दिया, इसलिए हम गुणों को मैन्युअल रूप से सेट करने पर वापस आ गए। हालांकि, यह केवल एक exe के साथ एक स्वयं निहित ऐप का निर्माण करेगा लेकिन सभी नेट कोर डीएलएस या केवल डीएलएस के साथ एक फ्रेमवर्क निर्भर ऐप

कमांड निष्पादित

dotnet publish Project.csproj -c "Release" -o "C:\Publish\App" -r "win-x64" --self-contained false

प्रश्न यह है कि जब से मैंने ऊपर निर्दिष्ट समस्याओं को मारा है, तब से मैं प्रकाशित प्रोफ़ाइल का उपयोग करके नेट कोर ऐप्स के VS2017 प्रकाशन की नकल कैसे कर सकता हूं।

लक्ष्य आउटपुट नेट कोर ऐप को एस्पनेटकोर डीएलएस के बिना प्रकाशित करना होगा लेकिन रिमोट होस्ट निष्पादन योग्य के साथ।

3
Kaizer69 17 अक्टूबर 2018, 20:46

1 उत्तर

सबसे बढ़िया उत्तर

प्रकाशित प्रोफ़ाइल का उपयोग बिल्ड के साथ पास करके किया जाना है

-p:DeployOnBuild=true -p:PublishProfile=<ProfileName>

से dotnet build या msbuild तक। यह "क्लासिक" ASP.NET प्रोजेक्ट्स जैसा ही है।

यदि आपको केवल फाइल सिस्टम परिनियोजन की आवश्यकता है, तो आप इसके बजाय dotnet publish का उपयोग कर सकते हैं जो लक्षित स्थानों पर सीधे प्रकाशित आउटपुट बना सकता है (वेब ​​परिनियोजन आंतरिक रूप से एक ही तंत्र का उपयोग अस्थायी स्थान पर प्रकाशित करके और फिर कॉपी, ज़िपिंग आदि) करता है।

dotnet publish रनटाइम आइडेंटिफ़ायर (-r विकल्प) पास करने पर स्वचालित रूप से एक स्व-निहित परिनियोजन बनाएगा।

यदि आप रनटाइम को बूट करने के लिए एक होस्ट exe भी चाहते हैं, तो आप इसका भी उपयोग कर सकते हैं

dotnet publish -r win-x64 --self-contained false -p:UseAppHost=true

एक .exe फ़ाइल उत्सर्जित करने के लिए जिसे आप path\to\dotnet.exe path\to\app.dll के बजाय विंडोज़ सेवा के रूप में उपयोग कर सकते हैं, जो अभी भी मशीन-व्यापी .NET कोर इंस्टॉल का उपयोग करेगी। यह 3.0 में डिफ़ॉल्ट आउटपुट का हिस्सा बन भी सकता है और नहीं भी।

5
Martin Ullrich 17 अक्टूबर 2018, 18:11