मैं एक .vbs स्क्रिप्ट से बुलाया csc.exe संकलक का उपयोग करता हूं।
अपनी xyz.cs स्क्रिप्ट में, निर्देशों के बाद निम्नलिखित पंक्तियाँ जोड़ें (मेरा उदाहरण रेंकी एसएसएच के लिए है):
using System;
using Renci;//FOR THE SSH
using System.Net;//FOR THE ADDRESS TRANSLATION
using System.Reflection;//FOR THE Assembly
//+ref>"C:\Program Files (x86)\Microsoft\ILMerge\Renci.SshNet.dll"
//+res>"C:\Program Files (x86)\Microsoft\ILMerge\Renci.SshNet.dll"
//+ico>"C:\Program Files (x86)\Microsoft CAPICOM 2.1.0.2 SDK\Samples\c_sharp\xmldsig\resources\Traffic.ico"
Csc कमांड बनाने के लिए .vbs स्क्रिप्ट के द्वारा Ref, Res और ico टैग्स को उठाया जाएगा।
फिर मुख्य में असेंबली रिज़ॉल्वर कॉलर जोड़ें:
public static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
.
... और वर्ग में कहीं और ही रिज़ॉल्वर जोड़ें:
स्थिर विधानसभा CurrentDomain_AssemblyResolve (ऑब्जेक्ट प्रेषक, ResolveEventArgs args)
{
स्ट्रिंग संसाधननाम = नया असेंबलीनाम (args.Name) .Name + ".dll";
उपयोग (var stream = Assembly.GetExecutingAssembly ()। GetManifestResourceStream (रिसोर्सनाम)
{
बाइट [] असेंबलीडाटा = नई बाइट [स्ट्रीम.लिफ्ट];
स्ट्रीम। रीडेड (असेंबलीडैटा, 0, असेम्बलीडैटा.लिफ्ट);
असेंबली वापस करें। लोड (असेंबलीडेटा);
}
}
मैं .bs फ़ाइल नाम (जैसे ssh.vbs ssh.cs के लिए दिखता है) से मेल करने के लिए vbs स्क्रिप्ट का नाम देता हूं; इससे स्क्रिप्ट को कई बार चलाना बहुत आसान हो जाता है, लेकिन अगर आप मेरी तरह बेवकूफ नहीं हैं, तो एक सामान्य स्क्रिप्ट टारगेट को ड्रैग-एंड-ड्रॉप से उठा सकती है।
मंद नाम_, ओशेल, धड़
सेट oShell = CreateObject ("Shell.Application")
Fso सेट करें = CreateObject ("Scripting.fileSystemObject")
'VBS SCRIPT का नाम TARGET FILE NAME के रूप में रखें
'################################################
name_ = विभाजन (wscript.ScriptName, "") (0)
'बाहरी DLL और ICAM नाम को .CS फ़ाइल से प्राप्त करें
'################################################# ######
कॉन्स्ट OPEN_FILE_FOR_READING = 1
ObjInputFile = fso.OpenTextFile (name_ & ".cs", 1) सेट करें
'एआरएआरवाई में पढ़ते हुए पढ़िए
'#############################
इनपुटडेटा = स्प्लिट (objInputFile.ReadAll, vbNewline)
प्रत्येक strData के लिए inputData में
अगर छोड़ दिया (strData, 7) = "// + ref>" तब
csc_references = csc_references और "/ संदर्भ:" और ट्रिम (बदलें (strData, "// + ref>", "") और ""
अगर अंत
अगर छोड़ दिया (strData, 7) = "// + res>" तब
csc_resources = csc_resources & "/ resource:" और ट्रिम (बदलें (strData, "// + res>", "") और ""
अगर अंत
अगर छोड़ दिया (strData, 7) = "// + ico>" तब
csc_icon = "/ win32icon:" और ट्रिम (बदलें (strData, "// + ico>", "")) और ""
अगर अंत
आगे
objInputFile.Close
'संकलन संकलन करें
'################
oShell.ShellExecute "c: \ windows \ microsoft.net \ फ्रेमवर्क \ v3.5 \ csc.exe", "/ चेतावनी: 1 / लक्ष्य: exe" और csc_references और csc_resources और csc_icon & "" & name_ & ".cs"। , "", "रनस", २
WScript.Quit (0)