Simplemente respondiendo a la solicitud de recompensa. Primero, usar Build Action = Content no afecta en absoluto la construcción. Es una propiedad del elemento del proyecto que otras herramientas pueden leer. Un constructor de instalador lo usa, por ejemplo, para descubrir que el archivo debe incluirse en el programa de instalación y desplegarse en la máquina del usuario.
Usar Build Action = Recurso incrustado como se indica en la pregunta upvoted fue la supervisión del OP. De hecho, esto instruye a MSBuild para incrustar el archivo como un recurso en el manifiesto del ensamblado, utilizando Assembly.GetManifestResourceStream() lo recupera en el tiempo de ejecución.
Pero está bastante claro por el comentario de recompensa que tampoco quieres eso. La alternativa es simplemente copiar el archivo en la máquina de destino. Donde se sentará pacientemente hasta que lo necesite. Notable sobre esto es que no de ninguna manera altera el tamaño del paquete que el usuario descarga de la Tienda. Se necesita la misma cantidad de espacio, ya sea dentro del ensamblaje o en un archivo separado en el paquete.
Arrastra eso como una forma de salir adelante.
Hace una diferencia en el tiempo de ejecución, todo el conjunto se asigna a la memoria virtual cuando se carga. Por lo tanto, un ensamblaje con un recurso tendrá más espacio de memoria virtual. Pero la palabra "virtual" es muy importante, se requieren muy pocos recursos del teléfono. Solo unos pocos bytes en las tablas de asignación de páginas para cada 4096 bytes en el recurso. No comienza a pagar por la memoria virtual hasta que se acceda. En ese punto, el sistema operativo del teléfono necesita realmente convertirlo de la memoria virtual a la física. O en otras palabras, cargue los bytes del recurso en la RAM. Esto no es diferente de cargar un archivo, también se carga en la RAM cuando lo abres.
Arrastra eso como una forma de salir adelante.
Nos estamos quedando sin buenas razones para hacer esto, Microsoft ciertamente escogió la forma predeterminada de manejar los recursos como una mejor práctica. Es. Pero a veces usted tiene para implementar contenido como un archivo, simplemente porque es demasiado grande. Uno que está empujando 2 gigabytes o más, consumiendo toda la memoria virtual en un sistema operativo de 32 bits, por lo que posiblemente no se pueda asignar a la máquina virtual. El programa simplemente no podrá comenzar. Este no es el tipo de programa que un usuario de teléfono va a estar muy satisfecho, realmente.
Luego debe enfocarse en la fase de compilación de la solución, el último paso cuando se construye una aplicación de teléfono. En el que se han compilado todos los proyectos de la solución y se ha creado el archivo único que se carga en la Tienda y que el usuario descarga.
Y sí, hay un problema allí, MSBuild no es lo suficientemente inteligente como para ver la biblioteca PCL que utiliza el recurso. La acción Build = Content debería ser lo suficientemente buena, como lo es para un instalador, pero eso no funciona. Se solo empaqueta el archivo DLL, no el recurso. Fue hecho para asumir que lo había incrustado, la solución de mejores prácticas.
Lo que tienes que hacer es anular el manifiesto del paquete. Descrito en this MSDN article. Muy, muy feo, estás mirando un cursor parpadeante en blanco. Que es donde me estoy quedando sin buenos consejos, esto fue hecho para no hacer.
estoy tratando de leer un archivo con la Acción de generación ajustado a contenido. – Martin