2013-08-26 29 views
16

Chúng tôi sử dụng NuGet để quản lý các gói của bên thứ ba của chúng tôi.Cách xử lý các gói x86 và x64

Chúng tôi cũng phải xây dựng cả hai bản dựng x86x64.

Hiện tại, chúng tôi có sự phụ thuộc vào gói NuGet (zeromq) phụ thuộc vào một dll C và do đó có số phát hành x86x64.

Khi tìm kiếm trong Nuget tôi chỉ thấy hai dự án riêng biệt (zeromq x64 và zeromq x86) và không phải là một dự án hợp nhất.

Hạn chế

quá trình xây dựng của chúng tôi trên các máy nhà phát triển là để lựa chọn cấu hình phù hợp (ví dụ Debug/x86, phiên bản x64, vv) trong visual studio và xây dựng vì vậy bất kỳ giải pháp chúng tôi sử dụng sẽ phải phù hợp với GUI của visual studio (nghĩa là các giải pháp MSBuild sẽ không thực sự phù hợp với luồng công việc hiện tại của chúng ta).

EDIT

Phụ Lục để hạn chế .... Nếu chúng ta không thể làm điều này tự động trong vòng NuGet, là có một cách để làm điều này với một số loại kịch bản PowerShell prebuild? tức là nếu chúng ta biết chúng ta đang xây dựng bản dựng x86 thì có cách nào để nối NuGet để nó sử dụng các gói x86 thay vì các gói x64 không?

Cách thích hợp để quản lý Gói NuGet như thế này là gì ??

+1

Bạn có thể muốn xem qua [câu trả lời này] (http://stackoverflow.com/a/11376762/80274) nó có thể cung cấp cho bạn một số nguồn cảm hứng cho tập lệnh dựng sẵn có điều kiện. –

Trả lời

4

Sau đó, bạn có hai cách tiếp cận,

  • Tạo ZeroMQ nĩa của riêng bạn và làm theo System.Data.SQLite.org để thực hiện Native Thư viện Pre-tải. Sau đó, bạn có thể tạo một gói NuGet duy nhất thay vì hai.

  • Tạo hai dự án cho tệp thực thi của bạn (cùng mã nguồn, chỉ hai tệp dự án). Một cho x86 và một cho x64. Thêm gói x86 của ZeroMQ vào x86 của bạn, trong khi x64 của ZeroMQ đến x64 của bạn. Nó là xấu xí, nhưng IHMO nó tránh điều hòa trong tệp dự án của bạn (có thể dễ dàng bị hỏng bởi bất kỳ trình phân tích cú pháp MSBuild nào).

+0

Cảm ơn Lex, tôi cho rằng nó sẽ đến đó. – chollida

+0

Tôi chấp nhận câu trả lời này hiện tại vì ít nhất nó cũng đưa ra một số giải pháp. Hy vọng rằng trong tương lai, điều này sẽ được khắc phục với NuGet và chúng tôi có thể chọn một câu trả lời mới! – chollida

+0

Có sự cải thiện nào trong vấn đề này không? Tôi có vấn đề chính xác như nhau – Juancentro

0

Tôi nghĩ rằng một nơi tốt để tìm kiếm sẽ http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference

Theo như tôi hiểu NuGet là thực sự chỉ Powershell cho xây dựng. Tôi sẽ đề nghị thiết lập một xây dựng có điều kiện dựa trên nền tảng hiện tại đang được biên dịch (86/64) và sau đó lọc Get-Package cho phiên bản bạn cần.

+0

Cảm ơn Mark, tôi sẽ xem xét tài liệu và xem tôi có thể hack thứ gì đó không. – chollida

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