c# visual-studio-2015 vsix project.json vsixmanifest

c# - Agregue las referencias del paquete project.json a un VSIX



visual-studio-2015 vsixmanifest (1)

No estoy seguro de entender su pregunta correctamente, pero si intenta instalar una Plantilla de proyecto a través de un VSIX y desea que la plantilla del proyecto incluya todos sus paquetes nuget cuando lo use, podría hacer algo como esto.

Edite el archivo xproj de su plantilla de proyecto y agregue las siguientes líneas:

<ItemGroup> <None Include="project.json"/> <None Include="project.lock.json"/> </ItemGroup>

Edite el archivo vstemplate de su plantilla de proyecto y agregue las siguientes líneas en el nodo Proyecto:

<ProjectItem ReplaceParameters="true" TargetFileName="project.json">project.json</ProjectItem> <ProjectItem ReplaceParameters="true" TargetFileName="project.lock.json">project.lock.json</ProjectItem>

Eso debería ser todo lo que necesita hacer. Ahora, cuando instale la plantilla del proyecto, luego cree un nuevo proyecto usando esa plantilla, debe incluir todos los paquetes nuget que estaban en el archivo project.json.

Al intentar agregar referencias a un VSIX, normalmente lo extrae de las referencias en .csproj. Sin embargo, si las referencias no están en el .csproj, porque ahora están en un archivo project.json, entonces no se arrastran al vsix. La solución puede compilarse, pero luego la extensión falla con errores de "archivo no encontrado" cuando se instala en Visual Studio (ya que los ensamblados no se copiaron en el VSIX).

Intenté con la sección del manifiesto así:

<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="*PROJECTNAME*" Path="|*ASSEMBLYNAME*|" AssemblyName="|*ASSEMBLYNAME*;AssemblyName|" />

Pero no funciona, ya que no reconoce las referencias del paquete.

Después de algunas investigaciones, vi un problema similar con una PCL, sin embargo, sin una respuesta y sin el mismo tipo de problema: MEF con la biblioteca de clases portátiles que usa Microsoft Composition MEF2 lanza una excepción de archivo no encontrado

En la misma nota, esto parece una solución aceptable: VSIX con Project Templates y NuGet Packages , sin embargo, por lo que yo entiendo, implica usar el paquete durante la instalación. Además de eso, no funciona para nuestro caso, ya que necesitan especificar la versión del paquete y estamos utilizando project.json para que podamos usar versiones flotantes (es decir: 2.0. *)

¿Hay alguna manera de hacer referencia a este proyecto. ¿Qué referencias faltan? Tal vez una solución? Las soluciones que he encontrado parecen obligar a todos a "pegar" de DLL en alguna parte, que para las versiones flotantes no es tan conveniente.

Gracias de antemano por cualquier ayuda o aporte.

Editar / Actualizar : Dado que VSIX empuja automáticamente cualquier ensamblaje al que se haga referencia en el CSPROJ (y no en el proyecto en sí), parece poco probable tratar de obtener los archivos DLL a nivel de proyecto. Después de muchos intentos, creo que una solución válida sería obtener los ensamblajes de la carpeta de salida. Sin embargo, que yo sepa, VSIX no tiene una forma de hacerlo, ¿o no?