2013-08-26 13 views
16

Używamy NuGet zarządzać nasze pakiety osób trzecich.Jak radzić sobie z pakietów x86 vs x64

Musimy również zbudować kompilacje x86 i x64.

Mamy teraz zależność na opakowaniu (zeromqNuGet), który zależy od dll C i dlatego ma x86 i x64 wydań.

Podczas wyszukiwania w Nuget widzę tylko dwa różne projekty (zeromq x64 i zeromq x86), a nie jeden zunifikowany projekt.

Ograniczenie

Nasz proces budowania na maszynach deweloperów jest, aby wybrać odpowiednią konfigurację (czyli Debug/x86, x64 Release, etc) w visual studio i budować tak każde rozwiązanie używamy musiałby pasować do GUI wizualnego studia (np. solucje MSBuild nie "naprawdę pasowałyby do naszego aktualnego workflow").

EDIT

Uzupełnienie do ograniczenia .... Jeśli nie możemy tego zrobić automatycznie w ciągu Nuget, czy istnieje sposób, aby zrobić to z jakiegoś skryptu powershell prebuild? tzn. jeśli wiemy, że budujemy kompilację x86, czy istnieje sposób na podłączenie NuGeta, aby używał pakietów x86 zamiast pakietów x64?

Jaki jest właściwy sposób zarządzania pakietami NuGet?

+1

Być może zechcesz przejrzeć [tę odpowiedź] (http://stackoverflow.com/a/11376762/80274), może to dać ci inspirację do skryptu wstępnej kompilacji. –

Odpowiedz

4

Wtedy masz dwa podejścia,

  • Stwórz własną ZeroMQ widelec i następują System.Data.SQLite.org wdrożyć Native Library obciążenia wstępnego. Następnie możesz utworzyć pojedynczy pakiet NuGet zamiast dwóch.

  • Utwórz dwa projekty dla swojego pliku wykonywalnego (ten sam kod źródłowy, tylko dwa pliki projektu). Jeden dla x86 i drugi dla x64. Dodaj pakiet x86 ZeroMQ do swojego x86, a x64 ZeroMQ do x64. To jest brzydkie, ale IHMO unika uwarunkowań w twoim pliku projektu (który może być łatwo zepsuty przez zły parser MSBuild).

+0

Dzięki Lex, założyłem, że do tego dojdzie. – chollida

+0

Akceptuję tę odpowiedź obecnie, ponieważ conajmniej daje pewne obejścia. Mam nadzieję, że w przyszłości zostanie to naprawione przez NuGet i możemy wybrać nową odpowiedź! – chollida

+0

Czy nastąpiła jakaś poprawa? Mam dokładnie ten sam problem – Juancentro

0

Myślę dobrym miejscem do szukania byłoby http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference

O ile mi zrozumieć Nuget jest naprawdę tylko PowerShell dla produkcji. Sugerowałbym ustawienie kompilacji warunkowej opartej na aktualnie kompilowanej platformie (86/64), a następnie przefiltrowanie pakietu Get do wersji, której potrzebujesz.

+0

Dzięki Mark, przyjrzę się dokumentom i zobaczę, czy mogę coś zhackować. – chollida

Powiązane problemy