Assemblies
Thêm tài nguyên vào Assembly
Trong phn này chúng ta sxem sự hỗ trợ của kiến trúc .NET về các files
ngun, chúng sử dụng để dễ dàng quốc tế hoá , và shoạt đng của vệ tinh
assemblies.
Thun li của sử dụng files tài nguyên thay cho lưu trữ một cách trực
tiếp chuỗi hoặc hình nh trong chương trình chính những lập trình không
rành thdễ ng hơn thay đổi các files tài nguyên này; mặc dù cn
một programmer, hoặc tối thiểu biết sdụng của một i file batch để biên
dch lại chúng vào trong c file i nguên mi. Nó không cn thiết tìm
kiếm sourcecode cho chuỗi strings khi sdụng các file tài nguyên cui cùng
chúng ta có thdùng assembly vtinh để xác định vị trí mà chúng gitài
nguyên.
Trong phần này chúng ta s học:
Tạo file tài nguyên, s dụng tiện ích resgen đối ng
ResourceWriter
Sửng dụng file tài nguyên truy xuất nhúng tài nguyên vi lớp
ResourceManager
Định vị bằng sử dụng (satellite) assemblies vệ tinh
Sự định vị Visual Studio .NET hỗ trợ cho các ứng dụng Windows
Tạo Files tài nguyên
Files i nguyên chứa đựng nhiều thứ như hình nh các bảng chuổi. Một
file i nguyên được tạo ra sử dụng một file văn bản bình thường hoặc một
file .resX dùng XML. Chúng ta bắt đầu xét file n bản
Một i nguyên nhúng một bảng chuổi thể được tạo thể sdụng
file n bản bình thường. file này chnhận chui nhập vào. Khoá n
thđược sử dụng t1 chương trình để nhận giá tr. Khoảng trắng được
dùng trong ckhoá và giá tr.
Ví dụ trình y 1 bng chuổi trong file strings.txt:
Title = Professional C#
Chapter = Assemblies
Author = Christian Nagel
Publisher = WROX Press
ResGen
Tiện ích resgen.exe sdụng tạo một file tài nguyên strings.txt. Thực hiện
như sau:
resgen strings.txt
Bạn có thế download file strings.resx có kèm theo tài liu để tham khảo
ResourceWriter
Thay sdụng tiện ích resgen để y dựng các file tài nguyên, tta
th dùng ResourceWriter. ResourceWriter một lớp trong namespace
System.Resources nó cũng hỗ trợ hình nh và các loi tài nguyên khác.
Thí ddưới Chúng ta tạo một đối tượng ResourceWriter rw sdụng một
constructor n file Demo.resources. Sau khi tạo thể hiện stài nguyên
thnâng lên 2GB trong trong tng kích tớc có thể thêm o dùng phương
thức AddResource() của lớp ResourceWriter. Thông sđầu tiên khoá c
thvà thông sthứ hai là giá trc thể. Tài nguyên hình nh thêm vào nh
lớp Image. Để dùng lớp Images, System.Drawing assembly phi được tham
chiếu tới. chúng ta cũng mở namespace System.Drawing bng chỉ dẫn.Đoạn
mã sau:
using System;
using System.Resources;
using System.Drawing;
class Class1
{
[STAThread]
public static void Main()
{
ResourceWriter rw = new ResourceWriter("Demo.resources");
using (Image image = Image.FromFile("logo.gif"))
{
rw.AddResource("WroxLogo", image);
rw.AddResource("Title", "Professional C#");
rw.AddResource("Chapter", "Assemblies");
rw.AddResource("Author", "Christian Nagel");
rw.AddResource("Publisher", "Wrox Press");
rw.Close();
}
}
}
Khi bn biên dịch chương trình stạo file demo.resources .Tài nguyên y
sẽ được sử dụng trong một ứng dụng Windows .
Sử dụng file tài nguyên
File i nguyên th được thêm vào assemblies s dụng Assembly
Generation Tool Al.exe dùng chn lựa /embed option, hoặc trực tiếp dùng
Visual Studio .NET. Đxem Visual Studio .NET sdụng như thế nào , i
tạo một C# Windows Application gọi nó là ResourceDemo:
Trên menu của Solution Explorer (Add | Add Existing Item), Trước đây đã
tạo file Demo.resources th đã được thêm vào d án rồi. Mặc định
BuildAction của i nguyên này được thiết lập trong Embedded Resource,
Nên tài nguyên này được nhúng vào output assembly:
Quốc tế hoá (Internationalization and Resources)