Bir .vbs komut dosyasından çağrılan csc.exe derleyicisi kullanın.
Xyz.cs betiğinize, yönergelerden sonra aşağıdaki satırları ekleyin (örneğim Renci SSH içindir):
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"
Ref, res ve ico etiketleri, csc komutunu oluşturmak için aşağıdaki .vbs komut dosyası tarafından alınır.
Ardından, Montaj çözücü arayanını Ana Ekrana ekleyin:
public static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
.
... ve çözümleyicinin kendisini sınıfın herhangi bir yerine ekleyin:
static Assembly CurrentDomain_AssemblyResolve (nesne göndericisi, ResolveEventArgs argümanları)
{
String resourceName = new AssemblyName (args.Name) .Name + ".dll";
using (var stream = Assembly.GetExecutingAssembly (). GetManifestResourceStream (resourceName))
{
Byte [] assemblyData = yeni Bayt [stream.Length];
stream.Read (assemblyData, 0, assemblyData.Length);
Assembly.Load (assemblyData) öğesini döndürür;
}
}
Vs betiği .cs dosya adıyla eşleşecek şekilde adlandırıyorum (örneğin, ssh.vbs ssh.cs dosyasını arar); bu, betiği birçok kez çalıştırmayı çok daha kolay hale getirir, ancak benim gibi bir aptal değilseniz, genel bir komut dosyası hedef .cs dosyasını sürükle ve bırak yönteminden alabilir:
Dim adı_, oShell, fso
Set oShell = CreateObject ("Shell.Application")
Set fso = CreateObject ("Scripting.fileSystemObject")
'HEDEF DOSYA ADI OLARAK VBS SCRIPT ADINI ALIN
'################################################
name_ = Böl (wscript.ScriptName, ".") (0)
'EXCAL DLL'leri VE SİMGESİ İSİMLERİNİ .CS DOSYASINDAN ALIN
'################################################# ######
Sabit OPEN_FILE_FOR_READING = 1
ObjInputFile = fso.OpenTextFile (name_ & ".cs", 1) olarak ayarlayın
'HER ŞEYİ BİR DÜZEYE OKUYUN
'#############################
inputData = Böl (objInputFile.ReadAll, vbNewline)
Her strData In inputData için
bırakılırsa (strData, 7) = "// + ref>"
csc_references = csc_references & "/ reference:" & kırpma (değiştir (strData, "// + ref>", "")) & ""
eğer biterse
bırakılırsa (strData, 7) = "// + res>"
csc_resources = csc_resources & "/ resource:" & kırpma (değiştir (strData, "// + res>", "")) & ""
eğer biterse
bırakılırsa (strData, 7) = "// + ico>"
csc_icon = "/ win32icon:" & trim (değiştir (strData, "// + ico>", "")) & ""
eğer biterse
Sonraki
objInputFile.Close
'DOSYAYI DERLEYİN
'################
oShell.ShellExecute "c: \ windows \ microsoft.net \ framework \ v3.5 \ csc.exe", "/ warn: 1 / target: exe" & csc_references & csc_resources & csc_icon & "" ve ad_ & ".cs" , "", "runas", 2
WScript.Quit (0)