कमांड प्रॉम्प्ट में C # स्रोत फ़ाइल का संकलन / निष्पादन


जवाबों:


140

CSC.exe .NET फ्रेमवर्क में शामिल CSharp कंपाइलर है और इसका उपयोग कमांड प्रॉम्प्ट से संकलन के लिए किया जा सकता है। आउटपुट एक निष्पादन योग्य ".exe" हो सकता है, यदि आप "/ लक्ष्य: exe", या DLL का उपयोग करते हैं; यदि आप / लक्ष्य का उपयोग करते हैं: पुस्तकालय, CSC.exe .NET फ्रेमवर्क निर्देशिका में पाया जाता है,

उदाहरण के लिए .NET 3.5 c:\windows\Microsoft.NET\Framework\v3.5\,।

चलाने के लिए, पहले, कमांड प्रॉम्प्ट खोलें, "प्रारंभ" पर क्लिक करें, फिर टाइप करें cmd.exe
फिर आपको अपनी स्रोत फ़ाइलों को रखने वाली निर्देशिका में सीडी लगाना होगा।

सी # कंपाइलर को इस तरह चलाएं:

  c:\windows\Microsoft.NET\Framework\v3.5\bin\csc.exe 
            /t:exe /out:MyApplication.exe MyApplication.cs  ...

(सभी एक लाइन पर)

यदि आपके पास एक से अधिक स्रोत मॉड्यूल संकलित किए जाने हैं, तो आप इसे उसी कमांड लाइन पर रख सकते हैं। यदि आपके पास संदर्भ के लिए अन्य विधानसभाएं हैं, तो उपयोग करें /r:AssemblyName.dll

सुनिश्चित करें कि आपके पास एक स्टैटिक मेन () पद्धति है जो आपके किसी एक वर्ग में "एंट्री पॉइंट" के रूप में परिभाषित है।

जिसके परिणामस्वरूप EXE, प्रकार चलाने के लिए MyApplication, जिसके बाद <ENTER>कमांड प्रॉम्प्ट का उपयोग कर।

MSDN पर यह आलेख कमांड-लाइन कंपाइलर के विकल्पों पर अधिक विवरण में जाता है। आप संसाधन एम्बेड कर सकते हैं, आइकन सेट कर सकते हैं, असेंबली पर हस्ताक्षर कर सकते हैं - सब कुछ जो आप Visual Studio के भीतर कर सकते हैं।

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

हालांकि यह जानना बहुत आसान है, आपको इसे किसी प्रकार के बिल्ड टूल जैसे कि NAnt , MSBuild , FinalBuilder आदि के ज्ञान के साथ जोड़ना चाहिए । ये उपकरण केवल मूल कंपाइलर ही नहीं, बल्कि संपूर्ण बिल्ड वातावरण प्रदान करते हैं।

एक मैक पर

एक मैक पर, सिंटैक्स समान है, केवल सी तेज कंपाइलर को केवल नाम दिया गया है csc:

$ csc /target:exe /out:MyApplication.exe MyApplication.cs ...

फिर इसे चलाने के लिए:

$ mono MyApplication.exe

1
अगर मुझे सही से याद है, तो आप केवल उसी तरीके से संकलन और निर्वासन कर सकते हैं जब आपके पास एक मुख्य विधि के साथ एक स्थिर वर्ग हो।
cjk

संकलक आपको इन दिनों चेतावनी देता है यदि आप नहीं करते हैं, लेकिन अच्छा बिंदु मैं इसे उत्तर में जोड़ दूंगा, धन्यवाद।
ऐश

5
यह कमाल का है। एक छोटे सी # एप्लिकेशन को संकलित करने की आवश्यकता है और विजुअल स्टूडियो को छूने में कोई दिलचस्पी नहीं है। धन्यवाद!
कॉलिनएम

1
Win10 में, मुझे वहां मेरा पता चला:C:\Program Files (x86)\MSBuild\14.0\Bin\csc.exe
TrakJohnson

17

C # प्रोग्राम्स (विजुअल स्टूडियो का उपयोग किए बिना या इसे इंस्टॉल किए बिना) को संकलित करने का दूसरा तरीका पर्यावरण चर में एक उपयोगकर्ता चर बनाना है, जिसका नाम है "पथ"।

इस चर में निम्न पथ की प्रतिलिपि बनाएँ:

"C: \ Windows \ Microsoft.NET \ फ्रेमवर्क \ v4.0.30319"

या जिसके आधार पर आपके पीसी में .NET है।

इसलिए आपको हर बार एक कोड संकलित करने के लिए पूरे रास्ते का उल्लेख नहीं करना होगा। बस उपयोग करें

"C: \ Users \ UserName \ Desktop> csc [विकल्प] filename.cs"

या जहाँ भी आपके कोड का रास्ता है।

अब आप जाने के लिए अच्छे हैं।


15

आप एक C # प्रोग्राम संकलित कर सकते हैं:

c:> csc Hello.cs

आप प्रोग्राम चला सकते हैं

c:> नमस्कार


1
यदि मैं अतिरिक्त पुस्तकालयों का उपयोग करूं तो क्या होगा? मुझे त्रुटियां हो रही हैं कि विधानसभाएं नहीं मिलीं ... इसे कैसे ठीक करें?
निकस आलियास

आपको पहले यह सुनिश्चित करना होगा कि संकलक का मार्ग पर्यावरण चर में है।
डेम लिंगदोह

@ NikasŽalias। उदाहरण के लिए csc Hello.cs -langversion: latest -reference: System.Net.Http.dll
एलेक्स

8

नवीनतम संस्करण के लिए, पहले एक पॉवर्सशेल विंडो खोलें, किसी भी फ़ोल्डर में जाएं (जैसे c:\projects\) और निम्न चलाएँ

# Get nuget.exe command line
wget https://dist.nuget.org/win-x86-commandline/latest/nuget.exe -OutFile nuget.exe

# Download the C# Roslyn compiler (just a few megs, no need to 'install')
.\nuget.exe install Microsoft.Net.Compilers

# Compiler, meet code
.\Microsoft.Net.Compilers.1.3.2\tools\csc.exe .\HelloWorld.cs

# Run it
.\HelloWorld.exe    

एक उदाहरण HelloWorld.cs

using System;

public class HelloWorld {
    public static void Main() 
    {
        Console.WriteLine("Hello world!");
    }
}

आप नए C # इंटरप्रेटर को भी आज़मा सकते हैं;)

.\Microsoft.Net.Compilers.1.3.2\tools\csi.exe
> Console.WriteLine("Hello world!");
Hello world!

7

हालांकि यह निश्चित रूप से एक अच्छी बात है कि कमांड लाइन पर कैसे निर्माण किया जाता है, अधिकांश काम के लिए आईडीई का उपयोग करना आसान हो सकता है। C # एक्सप्रेस संस्करण मुफ़्त है और पैसे के लिए बहुत अच्छा है;

वैकल्पिक रूप से, स्निप्पी जैसी चीजों का उपयोग C # कोड के टुकड़े चलाने के लिए किया जा सकता है।

अंत में - ध्यान दें कि कमांड लाइन विशिष्ट कार्यान्वयन है; एमएस के लिए, यह है csc; के लिए मोनो , यह है gmcsमोनो के लिए यह सिर्फ एमएस संस्करण के लिए "exename" है, लेकिन आम तौर पर "मोनो exename": और दोस्तों .... इसी तरह, निष्पादित करने के लिए।

अंत में, कई प्रोजेक्ट बिल्ड स्क्रिप्ट टूल के साथ निर्मित होते हैं; MSBuild , NAnt , आदि।


3
मैं आईडीई का उपयोग करता हूं। लेकिन मुझे जानना जरूरी था। यह सिर्फ सही नहीं पता नहीं लगता है! आपकी प्रतिक्रिया के लिए आभार।
ड्रैगनबर्न

1
NAnt के लिए +1! LINQPad कोड अंशों के साथ प्रयोग करने के लिए बहुत अच्छा है: linqpad.net
TrueWill

6

यहाँ MSBuild को स्टैंडअलोन C # 7.0 संकलक के साथ स्थापित करने का तरीका बताया गया है जो अब नवीनतम .Net फ्रेमवर्क 3.1 में बंडल नहीं है।

क्या दृश्य स्टूडियो के बिना C # संकलक स्थापित करना संभव है?

फिर बस दौड़ो

"C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0\Bin\Roslyn\csc.exe" MyApplication.cs

निष्पादन योग्य के लिए एकल स्रोत फ़ाइल संकलित करने के लिए।

यह भी ध्यान दें कि .Net कोर बिना पूर्वनिर्मित परियोजना के एकल स्रोत फ़ाइल के संकलन का समर्थन नहीं करता है


5

LinqPad कुछ सी # कोड का परीक्षण करने के लिए एक त्वरित तरीका है, और इसके मुफ्त है।


2

आप अपनी क्लास की फ़ाइलों को वीएस कमांड प्रॉम्प्ट के भीतर बना सकते हैं (ताकि सभी आवश्यक पर्यावरण चर लोड हो जाएं), डिफ़ॉल्ट विंडोज कमांड विंडो नहीं।

Csc.exe (संकलक) के साथ कमांड लाइन निर्माण के बारे में अधिक जानने के लिए, यह लेख देखें


2

यदि आपने Visual Studio स्थापित किया है तो आपके पास VS के लिए डेवलपर कमांड प्रॉम्प्ट है। आप cscकमांड का उपयोग करके आसानी से अपने प्रोग्राम का निर्माण कर सकते हैं और डेवलपर कमांड प्रॉम्प्ट के अंदर एप्लिकेशन के नाम के साथ अपना एप्लिकेशन चला सकते हैं।

आप नीचे दिए गए अनुसार डेवलपर कमांड प्रॉम्प्ट खोल सकते हैं।

प्रारंभ => वी.एस. के लिए डेवलपर कमांड प्रॉम्प्ट

उम्मीद है की यह मदद करेगा!



1

एक बार जब आप c # कोड लिखते हैं और इसे सेव करते हैं। आप इसे अन्य कोड की तरह निष्पादित करने के लिए कमांड प्रॉम्प्ट का उपयोग कर सकते हैं।

कमांड प्रॉम्प्ट में आप उस डायरेक्टरी को दर्ज करते हैं जो आपकी फ़ाइल में है और टाइप करें

संकलन करना:

mcs yourfilename.cs

निष्पादन हेतु:

mono yourfilename.exe 

यदि आप चाहते हैं कि आपकी .exe फ़ाइल भिन्न नाम के साथ भिन्न हो, तो टाइप करें

संकलन करना:

mcs yourfilename.cs -out:anyname.exe 

निष्पादन हेतु:

mono anyname.exe 

यह मदद करनी चाहिए!


1

विंडोज सिस्टम csc <filname>.csमें, कमांड प्रॉम्प्ट में कमांड का उपयोग करें जबकि वर्तमान निर्देशिका Microsoft Visual Studio \ <वर्ष> \ <संस्करण> में है

इसके दो तरीके हैं:

कमांड प्रॉम्प्ट का उपयोग करना:

  1. स्टार्ट -> कमांड प्रॉम्प्ट
  2. कमांड का उपयोग करते हुए डायरेक्टरी को विज़ुअल स्टूडियो फ़ोल्डर में बदलें: cd C: \ Program Files (x86) \ Microsoft विज़ुअल स्टूडियो \ 2017 / <<>
  3. कमांड का उपयोग करें: csc /.cs

डेवलपर कमांड प्रॉम्प्ट का उपयोग करना:

  1. प्रारंभ -> डेवलपर कमांड प्रॉम्प्ट VS 2017 के लिए (यहां निर्देशिका पहले से ही Visual Studio फ़ोल्डर में सेट है)

  2. कमांड का उपयोग करें: csc /.cs

आशा करता हूँ की ये काम करेगा!


0

C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\Roslyn

यह वह जगह है जहां आप c # 7 का समर्थन करने वाले # संकलक को पा सकते हैं अन्यथा यह .net 4 संकलक का उपयोग करेगा जो केवल c # 5 का समर्थन करता है



0

मैंने एक बैच फ़ाइल लिखी है, CompileCS.cmdजो C # फ़ाइल को संकलित करने (और वैकल्पिक रूप से चलाने) की अनुमति देता है, आप यहाँ बैच प्रोग्राम 'CompileCS' सहित पूरा उत्तर पा सकते हैं ।

इसका उपयोग सरल है:

CompileCS /run GetDotNetVersion.cs[arg1] ... [arg9]

GetDotNetVersion.cs को संकलित और चलाएगा - यदि आप इसे संकलित करना चाहते हैं, तो /runपैरामीटर को छोड़ दें ।

कंसोल एप्लिकेशन GetDotNetVersion.csको इस उत्तर से लिया गया है ।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.