CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 94

94
Chương 3: Miền ứng dụng, cơ chế phản chiếu, và siêu dữ liệu

không,

<codeBase>

phải chỉ đến một thư mục co vi tri tương đối so với thư mục ứng

dụng. Nếu assembly không tồn tại trong vị trí được chỉ định, phương thức

Load

sẽ ném

ngoại lệ

System.IO.FileNotFoundException

.

4. Nếu không có phần tử

<codeBase>

tương ứng với assembly, bộ thực thi sẽ tìm assembly

bằng kỹ thuật probing. Quá trình probing sẽ tìm file đầu tiên có tên của assembly (với
phần mở rộng là .dll hay .exe) trong các vị trí:

Thư mục gốc của ứng dụng.

Các thư mục con cua thư mục gốc phù hợp với tên và ban đia của assembly.

Các thư mục con (cua thư mục gôc) do ngươi dung chi đinh.

Phương thức

Load

là cách dễ nhất để tìm và nạp các assembly, nhưng cũng có thể tốn nhiều

chi phí cho việc dò trong nhiều thư mục để tìm các assembly có tên yếu. Phương thức

LoadFrom

cho phép bạn nạp assembly từ một vị trí xác định, nếu không tìm thấy nó sẽ ném

ngoại lệ

FileNotFoundException

. Bộ thực thi sẽ không cố tìm assembly như phương thức

Load

—phương thức

LoadFrom

không hỗ trợ GAC, policy, phần tử

<codeBase>

hay probing. Dưới

đây là đoạn mã trình bày cách sử dụng

LoadFrom

để nạp c:\shared\MySharedAssembly.dll. Lưu

ý rằng, khác với

Load

,

LoadFrom

yêu cầu bạn chỉ định phần mở rộng của file assembly.

// Nạp assembly có tên là c:\shared\MySharedAssembly.dll

Assembly a4 = Assembly.LoadFrom(@"c:\shared\MySharedAssembly.dll");

6.

6.

Th c thi assembly mi n ng d ng khác

ở ề ứ

Th c thi assembly mi n ng d ng khác

ở ề ứ

Bạn cần thực thi một assembly ở một miền ứng dụng khác vơi miền ứng dụng
hiện hành.

Gọi phương thức

ExecuteAssembly

của đối tượng

AppDomain

đai diên cho miền

ứng dụng, và chỉ định tên của assembly cần thực thi.

Nếu bạn có một assembly khả-thực-thi và muốn nạp để thực thi nó trong một miền ứng dụng,
phương thức

ExecuteAssembly

sẽ giúp bạn. Phương thức

ExecuteAssembly

có bốn dạng thức

khác nhau. Dạng thức đơn giản nhất chỉ nhận vào một kiểu

string

chứa tên của assembly cần

thực thi; bạn có thể chỉ định một file cục bộ hay một URL. Một dạng thức khác cho phép bạn
chỉ định chứng cứ (evidence) cho assembly (xem mục 13.10) và các đối số để truyền đến điểm
nhập của assembly (tương đương với các đối số dòng lệnh).
Phương thức

ExecuteAssembly

nạp assembly được chỉ định và thực thi phương thức được định

nghĩa trong siêu dữ liệu là điểm nhập của assembly (thường là phương thức

Main

). Nếu

assembly được chỉ định không có khả năng thực thi,

ExecuteAssembly

sẽ ném ngoại lệ

System.Runtime.InteropServices.COMException

. Bộ thực thi không thực thi assembly trong

một tiểu trình mới, vì thế quyền kiểm soát sẽ không trả về cho đến khi quá trình thực thi của
assembly kết thúc. Do

ExecuteAssembly

nạp một assembly bằng tên riêng phân (chỉ có tên

file), CLR sẽ không dùng GAC hay probing để tìm assembly (xem mục 3.5 để biết thêm chi
tiết).

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.