visual studio portable library example create windows-runtime nuget nuget-package portable-class-library

windows runtime - studio - Nuget Resolve dependencias de archivos locales



nuget pack example (1)

Tengo una solución con cuatro proyectos, tres PCL y un WinRT. He logrado crear un paquete nuget para cada uno, de forma individual, sin embargo, quiero hacer un único paquete para todos ellos, pero existen dependencias externas y también dependencias entre ellos y no sé cómo resolverlos. Lo que encontré para las dependencias externas es algo así como:

<?xml version="1.0"?> (...) <dependencies> <dependency id="SampleDependency" version="1.0" /> </dependencies> (...) </package>

Pero, ¿cómo puedo especificar dependencias locales?
Puedes ver un diagrama de la estructura aquí: http://i.imgur.com/AlotgHy.png


Encontré una manera de hacer esto con el proyecto de extensión de Visual Studio, sin embargo, dado que la pregunta es para Nuget, publicaré cómo resolví esto en Nuget.
Como tenía vistas en uno de mis PCL, las cosas se estaban complicando un poco, pero cuando encontré los archivos que necesitaba y la estructura del archivo, fue fácil. Aquí está la estructura:

Así que la idea es bastante simple, en este caso quería poner todo en .dlls , por lo que necesita agregar una sección lib y luego la carpeta específica de la plataforma (en mi caso wpa81 ) y luego cada archivo .dll que necesite.

En el caso del proyecto WindowsRuntinme necesita dos archivos, un WindowsRuntinmeProject.pri y WindowsRuntimeProject.winmd .
En el caso del archivo PCL con vistas, se necesitan archivos extra y lógica, por lo que necesita agregar el ClassLibraryWithViews.dll en la carpeta de la plataforma, luego debe crear una carpeta con el mismo nombre que el proyecto PCL , y dentro de poner el ClassLibraryWithViews.xr.xml (que tiene algunas etiquetas e información xaml) y luego crea la estructura de carpetas de las vistas en su proyecto , si tiene una. En mi ejemplo, tengo un Generic.xaml dentro de una carpeta de temas y PageView.xaml dentro de mi carpeta de Generic.xaml , así que replico esa estructura aquí. Puedes notar que los archivos no son .xaml , en realidad son .xbf , eso es lo que obtienes después de construir el proyecto, entonces esos son los que debes usar. También debo señalar que mi Generic.xbf es un ResourceDictionary (sin código subyacente) y mi PageView.xbf es, de hecho, una página, por lo que tiene código subyacente, pero cuando se está creando el paquete, eso es transparente, que es bonito.

Luego, después de instalarlo en su proyecto, tendrá todos los .dll que vea en la carpeta de la plataforma, y ​​también verá el proyecto WinRT como si fuera un .dll .
Es bueno señalar que cada archivo aquí se genera al compilar los proyectos en la solución, por lo que no es necesario crear ninguno.

Otro punto a mencionar es que puedes ver que agregué los archivos .dll de MvvmLight directamente a mi proyecto, aunque si lo deseas puedes agregarlos como dependencias en los metadatos del paquete nuget, para que se puedan obtener e instalar cuando estés instalando. re nuget paquete. La sección se puede ver aquí: