2013-05-20 32 views
5

tôi đã phát triển tùy chỉnh MSBuild nhiệm vụ gọi ExportSolution và tôi cần phải vượt qua tùy chỉnh enumPackageType giá trị cho nó.đèo biến kiểu tùy chỉnh để tùy chỉnh MSBuild nhiệm vụ

Các PackageType rất đơn giản:

public enum PackageType 
{ 
    Managed, 
    Unmanaged, 
    Both 
} 

Các kịch bản MSBuild là đơn giản quá:

<Target Name="ExportSolution" DependsOnTargets="BuildTasksDll"> 
    <Message Text="Exporting solution '$(SolutionName)' to '$(SolutionPath)'" /> 
    <ExportSolution SolutionName="$(SolutionName)" PackageType="Both"></ExportSolution> 
</Target> 

Tuy nhiên chạy kịch bản cho mục tiêu mà tôi nhận được thông báo lỗi sau:

lỗi MSB4030: "Cả hai" là giá trị không hợp lệ cho danh mục "PackageType" ter của tác vụ "ExportSolution". Tham số "PackageType" thuộc loại "Tasks.Common.PackageType".

Định dạng nào tôi nên chuyển giá trị cho biến PackageType để làm cho mã này hoạt động?

+0

Bạn đã thử chuyển nó làm tên loại đầy đủ, tức là 'Tasks.Common.PackateType.Both'? Các giải pháp khác có thể là để vượt qua nó như là chuỗi và sau đó phân tích nó bên trong nhiệm vụ – Pako

+0

@ Pako Tôi đã thử cách tiếp cận như vậy, không có sự khác biệt, không may ... – shytikov

+0

'Cả hai' có giá trị là 2, vì vậy chuyển '2' vào tài sản có thể hoạt động. Điều này sẽ không thể đọc được, vì vậy tôi cho rằng đề nghị của Pako là tạo chuỗi và phân tích cú pháp bên trong nhiệm vụ có thể tốt hơn . –

Trả lời

0

Tôi sẽ refactor Enum như vậy.

public enum PackageType 
{ 
    Managed = 0, 
    Unmanaged = 1, 
    Both = 2 
} 

Sau đó, tôi sẽ chỉnh sửa tập lệnh xây dựng của mình để sử dụng số nguyên làm phương pháp chọn.

<ExportSolution SolutionName="$(SolutionName)" PackageType=2></ExportSolution> 

Đây có thể không phải là giải pháp bạn đang tìm kiếm, nhưng nó có thể phù hợp với những gì bạn cần.

+0

Điều này có thể làm việc, chắc chắn, nhưng điều này cũng có nghĩa là tôi cần phải thay đổi giao diện của lớp được gọi là sử dụng số nguyên trần thay vì liệt kê ... Tôi có thể dễ dàng xóa enum rồi ... Và sẽ không có sự rõ ràng và dễ đọc mã nữa .... – shytikov

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