What is Assembly in C#

What is Assembly in C#: इस पुस्तक की शुरूआत में हमने Namespaces व Assembly के बारे में काफी अच्छी तरह से समझाने की कोशिश की थी। हमने देखा था कि जब हम किसी Source File को Compile करते हैं, तो वह एक .DLL/.EXE Intermediate Output File में Convert हो जाती है, जिसे Assembly के नाम से जाना जाता है।

हम जो भी Type Define करते हैं, उसे किसी ना किसी Namespace में ही Define करते हैं। अभी तक हमने जितने भी Programs Create किए हैं, उन सभी को एक Particular Namespace में ही Create किए हैं।

जब हम समान नाम के Namespace में विभिन्न प्रकार के Types Define करते हैं, तो एक प्रकार से हमारे User Defined Types की एक Library बन जाती है, जिसे हम Class Library या Type Library के नाम से Refer कर सकते हैं।

सामान्‍यत: इस प्रकार की Library को हम एक .DLL File के रूप में Compile करते हैं, ताकि जब भी कभी हमें उस Library के किसी Type Code की जरूरत हो, हम उस Library File से उस Code को Reuse कर सकें।

जब हम Visual Studio Use करते हैं, तो Class Library Define करने के लिए Visual Studio हमें एक अलग प्रकार का पूरा Project Provide करता है, जिसे हम “FILE => New => Project => Installed => Templates => Visual C# => Class Library” Option को Select करके भी  Create कर सकते हैं।

जबकि इसी काम को यदि हम Manually करना चाहें, तो निम्नानुसार तरीके से अपना स्वयं का Namespace Define कर सकते हैं, जिसके अन्दर हम जो भी Types Define करेंगे, वे सभी हमारी Library में Defined Types ही होंगे, जिन्हें Reuse किया जा सकता है:

File Name: MyLibrary.cs
using System;

namespace MyLibrary
{
    public class MyNewClassType
    {
        public void Display()
        {
            Console.WriteLine("Namespace: MyLibrary \tClass: MyNewClassType");
        }
    }
    public struct MyNewStructureType
    {
        public void Display()
        {
            Console.WriteLine("Namespace: MyLibrary \tClass: MyNewStructureType");
        }
    }
}

जब हम कोई Namespace Create करते हैं और उसमें किसी Type को Define करते हैं और उस Type को हम किसी External Class में Use करना चाहते हैं, तो उस स्थिति में ये जरूरी होता है कि हम C# Compiler को इस बात की जानकारी दें कि हम हमारे Current Class में जिस Type को Use कर रहे हैं, उस Type को MyLibrary नाम के Namespace में Define किया गया है। जैसे:

File Name: UsingMyLibrary.cs
    using System;
    using MyLibrary;

    class UsingMyLibrary
    {
        public static void Main()
        {
            MyNewClassType obj = new MyNewClassType();
            obj.Display();

            MyNewStructureType variable = new MyNewStructureType();
            variable.Display();
        }
    }

Output:
   Namespace: MyLibrary 	Class: MyNewClassType
   Namespace: MyLibrary 	Class: MyNewStructureType

जब हम इस Program को Command Prompt के माध्‍यम से निम्नानुसार Compile करके Run करते हैं:

C:\…\> csc UsingMyLibrary.cs MyLibrary.cs

तो ये Program हमें उपरोक्तानुसार Output देता है। हम देख सकते हैं कि इस Program में सबसे पहले हमने निम्न Statement द्वारा MyLibrary Namespace को अपने Program using Keyword के माध्‍यम से Include किया है:

using MyLibrary;

क्योंकि इस MyLibrary नाम के Namespace में ही हमने MyNewClassType MyNewStructureType नाम की Class व Structure को Define किया है। इसलिए UsingMyLibrary.cs File में यदि हम इन दोनों Types को Use करना चाहते हैं, तो हमें उपरोक्त Using Statement को Specify करना जरूरी होता है।

साथ ही Program को Compile करते समय भी हमने दूसरी File के रूप में MyLibrary.cs File को Specify किया है। इसलिए जब ये Program Run होता है, तो MyNewClassType MyNewStructureType को Search करता है।

चूंकि ये दोनों Types, Current File में Exist नहीं हैं, इसलिए C# Compiler इन दोनों Types को MyLibrary.cs में Search करता है, जिसे हमने UsingMyLibrary.cs File को Compile करते समय दूसरी File के रूप में Specify किया है। परिणामस्वरूप ये दोनों Types C# Compiler को MyLibrary.cs File में प्राप्त हो जाते हैं और हमें उपरोक्तानुसार Output प्राप्त हो जाता है।

Crating .DLL Library File using Command Prompt

हालांकि इस Program में हमने दोनों ही Source Files को Command Prompt पर Manually Specify करके अपने UsingMyLibrary.cs File को Compile किया है। लेकिन जब हम Professional Development करते हैं, तो अपनी किसी भी File को Source Code के रूप में Distribute नहीं करते बल्कि उसे Compiled Library File के रूप में Distribute करते हैं।

इसलिए यदि हम Command Prompt का प्रयोग करके अपनी MyLibrary File की MyLibrary.dll नाम की Library File Create करना चाहें, तो Command Prompt पर हमें निम्नानुसार /target:library Flag को Use करना होता है:

C:\…\> csc /target:library MyLibrary.cs

जब हम इस Statement का प्रयोग करके अपनी MyLibrary.cs File को Compile करते हैं, तो C# Compiler हमारे लिए MyLibrary.cs File की एक MyLibrary.dll नाम की .DLL Library File Create कर देता है।

परिणामस्वरूप अब हमें UsingMyLibrary.cs File को Compile करने के लिए MyLibrary.cs File की जरूरत नहीं रहती, लेकिन अब UsingMyLibrary.cs File को Command Prompt द्वारा Compile करने का तरीका थोडा बदल जाता है, जिसमें अब हमें Compilation के समय MyLibrary.cs File को Specify करने के स्थान पर MyLibrary.dll File का Reference Specify करना पडता है।

यानी जब हम हमारे Program को Compile करते हैं, तो Compile करते समय हमें उस External Class के Namespace वाली Assembly File अथवा Library File का Reference Specify करना जरूरी होता है, जिसमें हमारे द्वारा Use किए जाने वाले External Types को Define किया गया है।

ताकि C# Compiler को पता रहे कि हमने हमारे Program में जिस External Type को Use किया है, वह किस Namespace में Exist है और वह Namespace जिस Assembly में Exist है, उस Assembly का क्या नाम है।

इसलिए जब हम Command Prompt के माध्‍यम से अपने C# Programs को Compile कर रहे होते हैं, तब External Namespace Assembly File का Reference Specify करने के लिए हमें Command Prompt पर ही /r Flag के माध्‍यम से Referenced File का Path सहित पूरा नाम Specify करना होता है।

परिणामस्वरूप अब यदि हम हमारी UsingMyLibrary.cs File को Compile करना चाहें, तो Command Prompt पर हमें निम्नानुसार Statement लिखना होगा:

C:\…\> csc /r:MyLibrary.dll UsingMyLibrary.cs

इस बार जब हम Command Prompt पर इस Statement द्वारा अपनी UsingMyLibrary.cs File को Compile करते हैं, तब भी हमारी File Normal तरीके से Compile होती है, लेकिन इस बार हमारी File को MyLibrary.cs File की जरूरत नहीं होती। क्योंकि MyLibrary.cs File के Codes को हमने एक Library के रूप में Compile करके MyLibrary.dll File Create कर लिया है।

Crating .DLL Library File using Visual Studio

इसी Program को जब हम Visual Studio का प्रयोग करते हुए Create करना चाहते हैं, तो हमें थोडा अलग Procedure Follow करना पडता है। सबसे पहले हमें “FILE => New => Project => Installed => Templates => Visual C# => Class Library” Option को Select करके एक Class Library Create करना होता है और उस Class Library में निम्न चित्रानुसार अपना Library Code लिखना पडता है:

What is Assembly in C# - Hindi

Library Code लिखने के बाद हमें हमारी Library को Compile करना होता है, ताकि उसकी .DLL Library File बन सके। Compile करने के लिए हमें Visual Studio के “Build Menu => Build MyLibrary” Option को Click करना होता है।

जैसे ही हम इस Option पर Click करते हैं, हमारे MyLibrary Project के Folder में स्थित “bin=>Debug” या “bin=>Release” Folder में निम्न चित्रानुसार MyLibrary.dll नाम की Library File Create हो जाती है:

What is Assembly in C# - Hindi

MyLibrary Project द्वारा MyLibrary.dll File Generate करने के बाद अब हमें “FILE => New => Project => Installed => Templates => Visual C# => Console Application” Option को Select करके एक नया Console Application Create करना होता है और निम्न चित्रानुसार इस Console Application में अपने UsingMyLibrary.cs File में लिखे गए Code को लिखना होता है:

What is Assembly in C# - Hindi

जैसाकि इस चित्र में हम देख सकते हैं कि अभी हमारे MyLibrary, MyNewClassTypeMyNewStructureType नामों के नीचे एक Red Color Line Display हो रही है, जो इस बात का संकेत है कि Visual Studio अभी इन Types व Library के बारे में कुछ भी नहीं जानता।

इसलिए अब हमें UsingMyLibrary नाम के इस Project के लिए Visual Studio को ये बताना होता है कि MyLibrary नाम की Library कहां स्थित है। यानी हमें हमारे Current Project के लिए Visual Studio में MyLibrary का Reference Add करना है।

Reference Add करने के लिए हमें Visual Studio के “PROJECT => Add Reference…” Option को Click करना होता है, जिसके Response में हमें निम्नानुसार एक Dialog Box दिखाई देता है:

What is Assembly in C# - Hindi

इस Dialog Box में दिखाई देने वाले “Browse…” Button पर Click करने पर निम्नानुसार दिखाई देने वाले Dialog Box से हमें हमारी MyLibrary Project की उस MyLibrary.dll File को Select करके “Add” Button पर Click करना होता है:

What is Assembly in C# - Hindi

जैसे ही हम “Add” Button पर Click करते हैं, हमारे UsingMyLibrary नाम के Current Project के लिए MyLibrary.dll File का Reference निम्न चित्रानुसार Add हो जाता है, जिसमें हमारे MyNewClassType MyNewStructureType नाम के User Defined Types Defined हैं:

What is Assembly in C# - Hindi

अब जैसे ही हम इस Dialog Box पर दिखाई देने वाले “OK” Button पर Click करते हैं, हमें हमारा Project निम्न चित्रानुसार दिखाई देने लगता है:

What is Assembly in C# - Hindi

जहां हम देख सकते हैं कि अब MyLibrary, MyNewClassType MyNewStructureType नामों के नीचे Red Color Line Show नहीं हो रही है, जो इसी बात का Indication है कि हमारे Current Project के लिए MyLibrary का Reference Set हो गया है और अब इस Program को Compile करने पर MyLibrary Related किसी भी तरह की Compile Time Error Generate नहीं होगी।

परिणामस्वरूप अब यदि हम हमारे UsingMyLibrary Project को “F5” Function Key Press करके Compile करते हैं, तो हमें निम्नानुसार Output प्राप्त होता है:

What is Assembly in C# - Hindi

जो कि Exactly वही है, जो हमें तब प्राप्त हुआ था, जब हमने हमारे Program को Console Mode में Compile करके Run किया था।

mscorlib.dll Library

अभी तक हमने जितने भी Programs Create किए हैं, उन सभी में हमने Console Class के WriteLine() या Write() Method को जरूर Use किया है। Console Class को mscorlib नाम की Assembly में Define किया गया है, जो कि mscorlib.dll नाम की File में Exist है। इस Assembly में C# के लगभग सभी Basic Types को Define किया गया है, जिन्हें हम हमारे किसी भी .NET Application में Use करते हैं।

इस Assembly को हमें हमारे Program में Reference भी नहीं करना होताए क्योंकि ये Assembly Automatically सभी .NET Application के लिए Automatically Referenced होती है। साथ ही हम हमारे Program को Compile करते समय इसे Reference करें या न करें, ये Assembly हमारे हर Application के लिए Automatically Referenced रहती है।

C# in Hindiये Article इस वेबसाईट पर Selling हेतु उपलब्‍ध EBook C#.NET in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी। 

C#.NET in Hindi | Page:908 | Format: PDF

BUY NOW GET DEMO REVIEWS