2009-09-07 23 views
5

Có thể thực hiện điều này một cách tự nhiên nếu không có công cụ bổ trợ hoặc công cụ của bên thứ 3 không?Làm thế nào để cài đặt assembly vào GAC bằng Msbuild?

Tôi biết có gacutil, nhưng không có một exe để chạy, nếu không tôi có thể đã gọi nó từ nhiệm vụ Exec.

Có ai đã làm điều gì đó tương tự không?

+1

Tôi không hiểu ý bạn là gì "không có exe để chạy". gacutil chắc chắn là một exe bạn có thể chạy ... –

+0

yea, gacutil là một exe –

+0

tôi nghĩ rằng bạn đã đúng! tôi đã bị lừa. –

Trả lời

0

Gacuti.exe có thể ở nhiều nơi. Nó không nằm trên biến% path% của hệ thống, vì vậy bạn sẽ phải sử dụng đường dẫn đầy đủ (nó sẽ không chạy nếu không).
tôi sử dụng C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\Bin\:

"C: \ Program Files \ Microsoft Visual Studio 8 \ SDK \ v2.0 \ Bin \ gacutil.exe" -i MyAssembly.dll

Nó đã được báo cáo được tìm thấy trên các địa điểm khác cũng như:

C: \ WINDOWS \ Microsoft.NET \ Framework \ v1.1.4322 \ gacutil.exe
C: \ Program Files \ Microsoft SDKs \ Windows \ v6.0A \ bin \ gacutil.exe
C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \ gacutil.exe

Một cách dễ dàng để tìm thấy nó đang sử dụng cửa sổ tìm kiếm, hoặc dòng lệnh: dir gacutil.exe /s /a.

Thật không may, tôi có hạt giống một số máy chủ mà gacutil không được tìm thấy và tôi phải cài đặt dll theo cách thủ công.

+3

Chính thức, gacutil là công cụ SDK, vì vậy vị trí "đúng" nhất sẽ là đường dẫn được tìm thấy trong khóa đăng ký "HKLM \ SOFTWARE \ Microsoft \ Microsoft SDK \ Windows" dưới giá trị "CurrentInstallFolder". – bobbymcr

+0

Điều đó thật tuyệt. Cảm ơn. – Kobi

1

Gacutil.exe là công cụ hỗ trợ chuẩn để thực hiện cài đặt "hộp dev" của các hội đồng .NET. Tôi sẽ khuyên bạn chỉ cần sử dụng tác vụ Exec như bạn đã đề cập để gọi nó nếu bạn muốn GAC hội đồng của bạn như là một phần của một nhiệm vụ xây dựng.

Nếu bạn thực sự muốn thực hiện điều này mà không cần tạo quy trình mới, thì bạn phải viết một nhiệm vụ MSbuild tùy chỉnh để thực hiện các cuộc gọi interop COM cần thiết để thực hiện những gì gacutil.exe thực hiện. Junfeng Zhang's blog post sẽ là điểm khởi đầu tốt nếu bạn muốn đi tuyến đường này.

6

Bạn nên sử dụng tác vụ "GacUtil", từ Tác vụ cộng đồng của MSBuild (miễn phí). Tôi nghĩ rằng điều này là sạch hơn so với gọi thực thi.

+0

+1 Nội bộ nó gọi API GAC thay vì tìm kiếm công cụ quá BTW –

Các vấn đề liên quan