2013-08-26 9 views
16

Wir verwenden NuGet, um unsere Pakete von Drittanbietern zu verwalten.Umgang mit x86 vs x64-Pakete

Wir müssen auch eine x86 und x64 Builds bauen.

Wir haben jetzt eine Abhängigkeit von einem NuGet Paket (zeromq), die auf einem C-DLL abhängt und daher ein x86 und x64 Releases hat.

Bei der Suche in Nuget sehe ich nur zwei verschiedene Projekte (zeromq x64 und zeromq x86) und nicht ein einheitliches Projekt.

Constraint

Unser Build-Prozess auf den Entwickler-Maschinen ist die entsprechende Konfiguration (dh Debug/x86, Veröffentlichung x64, usw.) in Visual Studio zu wählen und bauen so eine Lösung müssten wir passen verwenden, um in die visuelle Studio-GUI (dh MSBuild-Lösungen würden nicht wirklich zu unserem aktuellen Workflow passen).

EDIT

Zusatz zur Einschränkung .... Wenn wir dies automatisch innerhalb NuGet nicht tun können, gibt es eine Möglichkeit, dies mit irgendeiner Art von Powershell vorkompilierte Skript zu tun? Wenn wir also wissen, dass wir den x86-Build erstellen, gibt es eine Möglichkeit, NuGet so zu haken, dass es die x86-Pakete anstelle der x64-Pakete verwendet.

Was ist der richtige Weg, NuGet-Pakete so zu verwalten?

+1

Vielleicht möchten Sie über [diese Antwort] (http://stackoverflow.com/a/11376762/80274) schauen, es gibt Ihnen vielleicht eine Inspiration für ein bedingtes Skript vor dem Build. –

Antwort

4

Dann haben Sie zwei Möglichkeiten,

  • Erstellen Sie Ihre eigenen ZeroMQ Gabel und folgen System.Data.SQLite.org native Bibliothek Vorbelastung zu implementieren. Dann können Sie ein einzelnes NuGet-Paket anstelle von zwei erstellen.

  • Erstellen Sie zwei Projekte für Ihre ausführbare Datei (den gleichen Quellcode, nur zwei Projektdateien). Eine für x86 und die andere für x64. Fügen Sie ZeroMQs x86-Paket zu Ihrem x86 ein, während ZeroMQ x64 zu Ihrem x64 hinzufügt. Es ist hässlich, aber IHMO vermeidet die Konditionierung in Ihrer Projektdatei (die von jedem schlechten MSBuild-Parser leicht beschädigt werden kann).

+0

Danke Lex, ich nahm an, dass es dazu kommen würde. – chollida

+0

Ich akzeptiere diese Antwort derzeit, da es zumindest einige Problemumgehungen gibt. Hoffentlich wird dies in Zukunft mit NuGet behoben und wir können eine neue Antwort wählen! – chollida

+0

Hat sich das verbessert? Ich habe genau das gleiche Problem – Juancentro

0

Ich würde denken, ein guter Platz wäre http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference

Was zu sehen sein, wie ich verstehen NuGet ist wirklich nur Powershell für Build. Ich würde vorschlagen, einen bedingten Build basierend auf der aktuellen Plattform zu erstellen (86/64) und dann das Get-Package auf die benötigte Version zu filtern.

+0

Danke Mark, ich werde mir die Dokumentation ansehen und sehen, ob ich etwas hacken kann. – chollida