चयनित बिल्ड कॉन्फ़िगरेशन (.NET फ़्रेमवर्क संस्करण केवल) के आधार पर क्लिकऑन सेटिंग्स परिवर्तित करें

पेज अद्यतन :
पेज निर्माण की तारीख :

पर्यावरण

ढांचा
  • सामान्य रूप से Windows प्रपत्र (.NET Framework)
  • WPF (.NET Framework) सामान्य रूप से

प्राक्कल्पना

इन युक्तियों की सामग्री .NET Framework के लिए प्रोजेक्ट मान्यताएँ हैं। .NET (कोर) के मामले में, आप Build कॉन्फ़िगरेशन इकाई में ClickOnce प्रकाशन सेटिंग्स सेट कर सकते हैं, इसलिए कृपया सामान्य रूप से प्रकाशित करें.

यह भी मानता है कि आपके पास ClickOnce का सामान्य रूप से उपयोग करने के लिए पर्याप्त ज्ञान है।

पहले

क्योंकि एक .NET Framework प्रोजेक्ट में केवल एक ClickOnce प्रकाशन सेटिंग हो सकती है, उदाहरण के लिए, डीबग बिल्ड और रिलीज़ बिल्ड में भिन्न सेटिंग्स के साथ प्रकाशित करने के लिए, आपको प्रकाशन से पहले हर बार सेटिंग्स को मैन्युअल रूप से बदलना होगा.

आप प्रोजेक्ट्स को DLL में समूहीकृत करके और प्रकाशन के लिए दो अलग-अलग प्रोजेक्ट बनाकर दो सेटिंग्स प्राप्त कर सकते हैं. आपके पास एक ही कॉन्फ़िगरेशन दो बार होगा, और यदि प्रकाशन के लिए आवश्यक संसाधन फ़ाइलें हैं, तो आपके पास एक समय में उनमें से दो होना चाहिए, इसलिए प्रबंधन परेशान होगा।

यह अनुभाग वर्णन करता है कि एक बैच फ़ाइल (.bat) बनाने के लिए कैसे के रूप में आप की जरूरत के रूप में कई सेटिंग्स और ClickOnce प्रकाशित करने के लिए।

ClickOnce कॉन्फ़िगर करना

इस बार, "सार्वजनिक फ़ोल्डर स्थान" और "स्थापना फ़ोल्डर URL" "डीबग बिल्ड" और "रिलीज़ बिल्ड" के लिए अलग किए गए थे। अन्य सेटिंग्स उन्हें आम बनाने की नीति के साथ बनाई गई हैं। अन्य पैरामीटर अलग-अलग हो सकते हैं, लेकिन "एप्लिकेशन फ़ाइलें" और "पूर्वापेक्षाएं" को अलग रखना बोझिल हो सकता है।

सबसे पहले, परियोजना खोलें और हमेशा की तरह अपनी ClickOnce सेटिंग्स दर्ज करें। इनपुट सामग्री डीबग द्वारा जारी किए जाने वाले पैरामीटर पर सेट की जाती है, लेकिन सामान्य भाग के अलावा कुछ भी ठीक है जब तक कि यह त्रुटि का कारण नहीं बनता है।

निम्न कॉन्फ़िगरेशन का एक उदाहरण है:

एक बार जब आप टाइप कर लेते हैं, तो प्रोजेक्ट सहेजें।

ClickOnce प्रकाशन के लिए कोई .bat फ़ाइल बनाएँ

चूंकि यह एक कमांड के साथ जारी किया जाता है, इसलिए इसे PowerShell जैसे अन्य मीडिया पर निष्पादित किया जा सकता है, लेकिन इस बार इसे BAT फ़ाइल के रूप में बनाया गया है।

आप फ़ाइल को कहीं भी बना सकते हैं, लेकिन सादगी उद्देश्यों के लिए, मैं इसे समाधान फ़ाइल के स्थान पर बनाऊंगा (.sln)। चूंकि यह एक BAT फ़ाइल है, इसलिए वर्ण एन्कोडिंग Shift-JIS है। PS1 UTF-8 (BOM) हो सकता है।

किसी पाठ संपादक में BAT फ़ाइल खोलें और टाइप करें: ध्यान दें कि PowerShell अलग-अलग तरीके से भागने को संभाल सकता है।

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

पहली पंक्ति "डेवलपर कमांड प्रॉम्प्ट" के स्थान को इंगित करती है। यह पथ आपके द्वारा स्थापित किए जा रहे Visual Studio के संस्करण पर निर्भर करता है.

पथ का प्रत्येक भाग निम्न स्थितियों पर निर्भर करता है:

प्रोग्राम फ़ाइलें
पथ शर्तें
प्रोग्राम फ़ाइलें
  • यदि आप 32-बिट OS का उपयोग कर रहे हैं
  • यदि आप किसी 64-बिट OS पर Visual Studio के 64-बिट संस्करण का उपयोग कर रहे हैं
प्रोग्राम फ़ाइलें (x86)
  • यदि आप किसी 64-बिट OS पर Visual Studio के 32-बिट संस्करण का उपयोग कर रहे हैं
2022
यह Visual Studio के उस संस्करण पर निर्भर करता है जिसे आप स्थापित कर रहे हैं.
समुदाय
यह आपके द्वारा स्थापित किए जा रहे Visual Studio के संस्करण पर निर्भर करता है. "समुदाय", "पेशेवर", "एंटरप्राइज़", आदि दर्ज किए जाएंगे।

दूसरी पंक्ति वर्तमान निर्देशिका को BAT फ़ाइल के स्थान पर ले जाती है.

तीसरी पंक्ति ClickOnce बिल्ड प्रोसेसिंग आदेश है। प्रत्येक पैरामीटर का अर्थ इस प्रकार है।

प्राचल नाम विवरण
एमएसबिल्ड एक आदेश जो बिल्ड प्रक्रिया को निष्पादित करता है। पहले आवश्यक और लिखा गया है।
OnceBuildConfiguration पर क्लिक करें.sln बनाए जाने वाले समाधान के फ़ाइल नाम का वर्णन करता है.
/t:Publish एक ClickOnce बिल्ड प्रक्रिया को इंगित करता है।
/p:Configuration=Debug आपके समाधान के लिए सेट किया गया बिल्ड कॉन्फ़िगरेशन निर्दिष्ट करता है. यदि आप डीबग कॉन्फ़िगरेशन बनाया जा करने के लिए परिवर्तित करने के लिए चाहते हैं, तो पाठ "डीबग" भाग में परिवर्तित करें।
/p:PublishUrl="publish\Debug\\" निर्दिष्ट स्ट्रिंग के साथ Visual Studio प्रकाशन स्क्रीन पर "सार्वजनिक फ़ोल्डर स्थान" का मान अधिलेखित करें और इसे निष्पादित करें।
/p:InstallUrl="\\xxxxServer\publish_Debug\\" निर्दिष्ट स्ट्रिंग के साथ Visual Studio प्रकाशन स्क्रीन पर "स्थापना फ़ोल्डर URL" का मान अधिलेखित करें और इसे निष्पादित करें।

कुछ पैरामीटर निकाले गए हैं, लेकिन अन्य पैरामीटर्स के लिए निम्न लिंक देखें:

इस बार एक नमूने के रूप में, हम प्रत्येक डीबग और रिलीज़ बिल्ड में ClickOnce के प्रकाशन पैरामीटर को बदल देंगे, इसलिए हम इसे निम्नानुसार बनाएंगे।

ClickOnceDebug द्वारा प्रकाशित.bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

ClickOnceRelease प्रकाशित .bat

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /p:Configuration=Release /p:PublishUrl="publish\Release\\" /p:InstallUrl="\\xxxxServer\publish_Release\\"

ClickOnce BAT फ़ाइल निष्पादन प्रकाशित करता है

प्रत्येक BAT फ़ाइल को चलाने का प्रयास करें।

कमांड प्रॉम्प्ट लॉन्च किया गया है और बिल्ड प्रारंभ होता है।

वास्तव में, इस बार बनाई गई BAT फ़ाइल केवल बिल्ड तक एक प्रक्रिया है, इसलिए फ़ाइल "सार्वजनिक फ़ोल्डर स्थान" में नहीं बनाई गई है। प्रकाशन के लिए आवश्यक फ़ाइलें बनाई गई हैं। उदाहरण के लिए, डीबग बिल्ड के मामले में, आपके पास "< प्रोजेक्ट फ़ोल्डर पथ >\bin\Debug\app.publish\" में कोई फ़ाइल होनी चाहिए. इन फ़ाइलों की प्रतिलिपि "स्थापना फ़ोल्डर का URL" में बनाएँ और यह ClickOnce के रूप में सही ढंग से काम करेगा।

किसी सार्वजनिक फ़ोल्डर स्थान पर प्रकाशित करें (यदि गंतव्य एक फ़ोल्डर है जिस पर आपकी सीधी पहुँच है)

निम्न साइट का उपयोग इस भाग के लिए एक संदर्भ के रूप में किया जाता है.

यह क्षेत्र सीधे ClickOnce के प्रसंस्करण से संबंधित नहीं है, इसलिए कृपया विस्तृत स्पष्टीकरण के लिए उपरोक्त साइट को देखें।

सबसे पहले, किसी पाठ संपादक में प्रोजेक्ट फ़ाइल (.csproj) खोलें। यह कोई समाधान फ़ाइल नहीं है।

अंदर एक XML संरचना है, और यदि आप नीचे स्क्रॉल करते हैं, तो इसके ऊपर की </Project> रेखा में निम्न कोड जोड़ें। यदि यह एक फ़ाइल प्रतिलिपि आधार प्रक्रिया है, तो सामग्री तय की गई है, लेकिन का हिस्सा मनमाना है CopyPublishedApplication । आप इस नाम का उपयोग बाद में करेंगे।

<!-- ここから ClickOnce の発行処理 -->
<Target Name="CopyPublishedApplication">
  <ItemGroup>
    <MySourceFiles Include="$(PublishDir)**\*.*" Exclude="$(PublishDir)$(AssemblyName).exe" />
  </ItemGroup>
  <PropertyGroup>
    <AppricationDir>$(_DeploymentApplicationDir.Substring($(PublishDir.Length)))</AppricationDir>
  </PropertyGroup>
  <Copy SourceFiles="@(MySourceFiles)" DestinationFiles="@(MySourceFiles->'$(PublishUrl)%(RecursiveDir)%(Filename)%(Extension)')" />
</Target>
<!-- ここまで ClickOnce の発行処理 -->

एक बार जब आप इसे दर्ज कर लेते हैं तो इसे सहेजें।

फिर प्रत्येक BAT फ़ाइल खोलें और msbuild पैरामीटर में /t:CopyPublishedApplication जोड़ें। CopyPublishedApplication यह वह नाम है जो मैंने आपको पहले दिया था।

ClickOnceDebug प्रकाशित करता है.bat (उदाहरण)

call "C:\Program Files\Microsoft Visual Studio\2022\Community\Common7\Tools\VsDevCmd.bat"
cd %~dp0
msbuild ClickOnceBuildConfiguration.sln /t:Publish /t:CopyPublishedApplication /p:Configuration=Debug /p:PublishUrl="publish\Debug\\" /p:InstallUrl="\\xxxxServer\publish_Debug\\"

जब आप BAT फ़ाइल चलाते हैं, तो आप देख सकते हैं कि फ़ाइल की प्रतिलिपि सार्वजनिक फ़ोल्डर स्थान पर बनाई गई है. इस समय, फ़ाइल >.exe कोई < प्रोग्राम नाम नहीं है, लेकिन यह अनावश्यक है क्योंकि यह मूल रूप से सेटअप.exe में शामिल है।

परिशिष्ट

यदि समाधान में एकाधिक प्रोजेक्ट हैं, तो सभी प्रोजेक्ट्स के लिए चलता है CopyPublishedApplication । ज्यादातर मामलों में, यह केवल exe प्रोजेक्ट के लिए सेट है, इसलिए किसी अन्य प्रोजेक्ट में CopyPublishedApplication चलते समय एक त्रुटि प्रदर्शित की जाएगी, इसे अनदेखा करना सुरक्षित है क्योंकि यह केवल एक संदेश प्रदर्शित करता है।

किसी सार्वजनिक फ़ोल्डर स्थान पर प्रकाशित करें (FTP के लिए)

मैंने इसे आज़माया नहीं है, लेकिन आप निम्नलिखित साइटों को संदर्भित करना चाह सकते हैं।

ध्यान में रखने के लिए अन्य बातें