
Assemblies
Thêm tài nguyên vào Assembly
Trong phần này chúng ta sẽ xem sự hỗ trợ của kiến trúc .NET về các files
nguồn, chúng sử dụng để dễ dàng quốc tế hoá , và sự hoạt động của vệ tinh
assemblies.
Thuận lợi 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 là những lập trình không
rành có thể dễ dàng hơn thay đổi các files tài nguyên này; mặc dù nó cần
một programmer, hoặc tối thiểu biết sử dụng của một vài file batch để biên
dịch lại chúng vào trong các file tài nguỵên mới. Nó không cần thiết tìm
kiếm sourcecode cho chuỗi strings khi sử dụng các file tài nguyên cuối cùng
chúng ta có thể dùng assembly vệ tinh để xác định vị trí mà chúng giữ tà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 và đối tượng
ResourceWriter
Sửng dụng file tài nguyên và truy xuất nhúng tài nguyên với 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 tài nguyên chứa đựng nhiều thứ như hình ảnh các bảng chuổi. Một
file tà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 văn bản
Một tài nguyên nhúng một bảng chuổi có thể được tạo có thể sử dụng
file văn bản bình thường. file này chỉ nhận chuổi nhập vào. Khoá là tên nó
có thể được sử dụng từ 1 chương trình để nhận giá trị. Khoảng trắng được
dùng trong cả khoá và giá trị.
Ví dụ trình bày 1 bảng chuổi trong file strings.txt:
Title = Professional C#
Chapter = Assemblies
Author = Christian Nagel
Publisher = WROX Press

ResGen
Tiện ích resgen.exe sử dụ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 liệu để tham khảo
ResourceWriter
Thay vì sử dụng tiện ích resgen để xây dựng các file tài nguyên, thì ta có
thể dùng ResourceWriter. ResourceWriter là một lớp trong namespace
System.Resources nó cũng hỗ trợ hình ảnh và các loại tài nguyên khác.
Thí dụ dưới Chúng ta tạo một đối tượng ResourceWriter rw sử dụng một
constructor tên file Demo.resources. Sau khi tạo thể hiện số tài nguyên có
thể nâng lên 2GB trong trong tổng kích thước có thể thêm vào dùng phương
thức AddResource() của lớp ResourceWriter. Thông số đầu tiên là khoá cụ
thể và thông số thứ hai là giá trị cụ thể. Tài nguyên hình ảnh thêm vào nhờ
lớp Image. Để dùng lớp Images, System.Drawing assembly phải được tham
chiếu tới. chúng ta cũng mở namespace System.Drawing bằng 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 bạn biên dịch chương trình sẽ tạo file demo.resources .Tài nguyên này
sẽ được sử dụng trong một ứng dụng Windows .

Sử dụng file tài nguyên
File tài nguyên có thể được thêm vào assemblies sử dụng Assembly
Generation Tool Al.exe dùng chọn lựa /embed option, hoặc trực tiếp dùng
Visual Studio .NET. Để xem Visual Studio .NET sử dụng như thế nào , Tôi
tạo một C# Windows Application và gọi nó là ResourceDemo:
Trên menu của Solution Explorer (Add | Add Existing Item), Trước đây đã
tạo file Demo.resources có thể đã được thêm vào dự án rồi. Mặc định
BuildAction của tà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)