Tôi đang phát triển một tác vụ MSBuild tùy chỉnh xây dựng một ORM layer và sử dụng nó trong một dự án. Tôi đang bị cản trở bởi hành vi của Visual Studio giữ MSBuild nhiệm vụ DLL và không cho phép đi.Visual Studio 2008 khóa các cụm MSBuild Task tùy chỉnh
Tôi muốn tổ chức giải pháp của mình như thế này;
My Solution
|
+- (1) ORM Layer Custom Task Project
| |
| +- BuildOrmLayerTask.cs // here's my task
|
+- (2) Business Logic Project // and here's the project that uses it.
|
+- <UsingTask TaskName="BuildOrmLayerTask" AssemblyFile="$(TaskAssembly)" />
Tuy nhiên, khi dự án (2) xây dựng, nó sẽ khóa vào lắp ráp từ dự án (1). Vì vậy, bây giờ tôi không thể xây dựng dự án (1) một lần nữa mà không đóng giải pháp và mở lại nó.
Có cách nào để tôi có thể sắp xếp mọi thứ để tác vụ tùy chỉnh tạo không bị khóa bởi Visual Studio không?
Khởi chạy một tiến trình msbuild.exe khác có vẻ là giải pháp duy nhất hoạt động. Tôi không thấy cách mở rộng AppDomainIsolatedTask được cho là hoạt động trong tình huống này, vì MSBuild đã tải assembly trong AppDomain chính vào thời điểm nó cố đọc các kiểu. Có cần phải có một cách trong tập tin dự án chính nó để cho MSBuild tải nhiệm vụ trong một AppDomain khác. Microsoft từ chối khắc phục vấn đề lớn này vì các lần truy cập hiệu suất bằng cách sử dụng các AppDomain mới - cũng cho phép chúng tôi ghi đè tùy chọn và quyết định cho chính mình? Tại sao đây là một vấn đề khó khăn đối với MS "kỹ sư" để sửa chữa? – makhdumi
Mở rộng AppDomainIsolatedTask không hoạt động đối với tôi. – Fosna
Bạn không phải tạo một dự án MSBuild riêng biệt. Bạn có thể chỉ cần đặt một điều kiện vào mục tiêu của bạn và làm cho mục tiêu 'BeforeBuild' thực hiện dự án hiện tại với một số tham số, ví dụ: '' và ' '. –
Stijn