Tôi sử dụng trình biên dịch csc.exe được gọi từ tập lệnh .vbs.
Trong tập lệnh xyz.cs của bạn, hãy thêm các dòng sau sau các lệnh (ví dụ của tôi là cho Renci SSH):
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"
Các thẻ ref, res và ico sẽ được chọn bởi tập lệnh .vbs bên dưới để tạo thành lệnh csc.
Sau đó thêm trình gọi trình phân giải lắp ráp trong Chính:
public static void Main(string[] args)
{
AppDomain.CurrentDomain.AssemblyResolve += new ResolveEventHandler(CurrentDomain_AssemblyResolve);
.
... và thêm trình phân giải chính nó vào đâu đó trong lớp:
hội tĩnh hiện tạiDomain_AssuggingResolve (người gửi đối tượng, ResolveEventArss args)
{
Chuỗi resourceName = new AssociationName (args.Name) .Name + "đậm";
bằng cách sử dụng (var stream = Hội.GetExecutingAssugging (). GetManifestResourceStream (resourceName))
{
Byte [] assemblyData = new Byte [stream.Lipse];
stream.Read (assemblyData, 0, assemblyData.Lipse);
trả lại hội.Load (assemblyData);
}
}
Tôi đặt tên cho tập lệnh vbs để khớp với tên tệp .cs (ví dụ: ssh.vbs tìm ssh.cs); điều này làm cho việc chạy tập lệnh dễ dàng hơn rất nhiều lần, nhưng nếu bạn không phải là một kẻ ngốc như tôi thì một tập lệnh chung có thể lấy tệp .cs đích từ kéo và thả:
Tên mờ_, oShell, fso
Đặt oShell = CreateObject ("Shell.Application")
Đặt fso = CreateObject ("Scripting.fileSystemObject")
'TÊN TÊN VBS SCRIPT TÊN TÊN GỌI TARGET
'##################################################
name_ = Tách (wscript.ScriptName, ".") (0)
'NHẬN TÊN DLL VÀ ICON TUYỆT VỜI TỪ FILE .CS
'################################################### ######
Hằng OPEN_FILE_FOR_READING = 1
Đặt objInputFile = fso.OpenTextFile (name_ & ".cs", 1)
'ĐỌC MỌI THỨ VÀO MỘT ARRAY
'##############################
inputData = Split (objInputFile.Read ALL, vbNewline)
Đối với mỗi strData Trong inputData
nếu còn lại (strData, 7) = "// + ref>" thì
csc numferences = csc numferences & "/ tham khảo:" & trim (thay thế (strData, "// + ref>", "")) & ""
kết thúc nếu
nếu còn lại (strData, 7) = "// + res>" thì
csc_resource = csc_resource & "/ resource:" & trim (thay thế (strData, "// + res>", "")) & ""
kết thúc nếu
nếu còn lại (strData, 7) = "// + ico>" thì
csc_icon = "/ win32icon:" & trim (thay thế (strData, "// + ico>", "")) & ""
kết thúc nếu
Kế tiếp
objInputFile. Đóng
'TẠO FILE
'################
oShell.ShellExecute "c: \ windows \ microsoft.net \ framework \ v3.5 \ csc.exe", "/ warn: 1 / target: exe" & csc numferences & csc_resource & csc_icon & "" & name_ & ".cs" , "", "Runas", 2
WScript.Quit (0)