c# - update - repositorio nuget
Cómo lidiar con los paquetes x86 vs x64 (2)
Creo que un buen lugar para mirar sería http://docs.nuget.org/docs/reference/package-manager-console-powershell-reference
Según tengo entendido, NuGet es realmente Powershell for Build. Yo sugeriría configurar una compilación condicional basada en la plataforma actual que se está compilando (86/64) y luego filtrar el Get-Package a la versión que necesita.
Usamos NuGet
para administrar nuestros paquetes de terceros.
También tenemos que construir tanto una compilación x86
como una compilación x64
.
Ahora tenemos una dependencia de un paquete NuGet
( zeromq
) que depende de un zeromq
C dll y, por lo tanto, tiene versiones x86
y x64
.
Al buscar en Nuget, solo veo dos proyectos distintos (zeromq x64 y zeromq x86) y no un proyecto unificado.
Restricción
Nuestro proceso de compilación en las máquinas de los desarrolladores consiste en seleccionar la configuración adecuada (por ejemplo, Debug / x86, Release x64, etc.) en visual studio y compilar para que cualquier solución que utilicemos tenga que encajar en la GUI de visual studio (es decir, las soluciones de MSBuild no ''realmente encaja nuestro flujo de trabajo actual).
EDITAR
Addendum a la restricción ... Si no podemos hacer esto automáticamente dentro de NuGet, ¿hay alguna manera de hacerlo con algún tipo de secuencia de comandos anterior al desarrollo de powershell? es decir, si sabemos que estamos construyendo la compilación x86, ¿hay alguna forma de conectar NuGet para que use los paquetes x86 en lugar de los paquetes x64?
¿Cuál es la forma correcta de administrar paquetes de NuGet de esta manera?
Entonces tienes dos enfoques,
Cree su propia horquilla de ZeroMQ y siga System.Data.SQLite.org para implementar la precarga de la biblioteca nativa. Luego puede crear un solo paquete NuGet en lugar de dos.
Cree dos proyectos para su ejecutable (el mismo código fuente, solo dos archivos de proyecto). Uno para x86 y el otro para x64. Agregue el paquete x86 de ZeroMQ a su x86 uno, mientras que el paquete x64 de ZeroMQ a su x64. Es feo, pero IHMO evita el acondicionamiento en el archivo de su proyecto (que puede romperse fácilmente con cualquier analizador MSBuild defectuoso).