[.net] ¿Cómo puedo hacer que mi paquete gestionado NuGet soporte proyectos C ++ / CLI?


Answers

Como se menciona en la respuesta a este puerto ( Nuget no instalará Entity Framework en el proyecto C ++ / CLI ), NuGet no realizará los cambios en un proyecto de C ++ / CLI por usted. Sin embargo, descargará y desempaquetará la dependencia por usted. Lo usamos desde la línea de comando como parte de nuestras dependencias make. La línea de comando se verá algo así:

/.NuGet/NuGet.exe
      Install 
      -NonInteractive 
      -ConfigFile $ENV{SRC_ROOT}/.nuget/NuGet.config 
      -OutputDirectory $ENV{SRC_ROOT}/packages 
      $ENV{SRC_ROOT}/packages.config

Tenga en cuenta que los argumentos de la línea de comandos están separados uno a una línea para facilitar la lectura. También decidimos comprobar NuGet en nuestro control de origen en la carpeta .NuGet. El objetivo era facilitar la configuración de una máquina de construcción para nuestros diversos entornos (no todos utilizan Visual Studio). Una vez que haya ejecutado este comando por primera vez, debe agregar manualmente las dependencias a su proyecto C ++ / CLI.
Espero que ayude.

Question

He hecho un paquete NuGet que funciona bien cuando lo uso desde un proyecto C #. Contiene una DLL en el directorio lib/net40 y la DLL se agrega como referencia.

Ahora que NuGet admite C ++, ¿cómo modifico mi paquete para que la DLL se pueda agregar como referencia administrada en un proyecto de C ++ / CLI? No puedo encontrar ningún tutorial que explique esto. Si intento simplemente agregar el paquete como está, obtengo el siguiente error:

Está intentando instalar este paquete en un proyecto que se dirige a 'Native, Version = v0.0', pero el paquete no contiene ninguna referencia de ensamblado ni archivos de contenido que sean compatibles con ese marco.

Uno podría pensar que la solución es poner los archivos en lib / native, pero de acuerdo con http://docs.nuget.org/docs/reference/support-for-native-projects , eso no es compatible. Además, simplemente poner el DLL directamente bajo lib no parece hacer nada.

Aparentemente, se supone que debo hacer esto con un archivo .props o .targets en compilación / nativo, pero ¿qué necesito poner en esos archivos para que esto funcione?




El instalador intenta agregar una referencia a sí mismo en el proyecto de inicio de C #. Haga que un proyecto de C # sea el proyecto de inicio en la solución antes de la instalación. Crea un proyecto ficticio C # si no tienes uno






Links