37 votes

Ajouter un projet.json paquet de références à une VSIX

Lorsque vous essayez d'ajouter des références à un VSIX, normalement, il la tire de l'références dans le .csproj. Toutefois, si les références ne sont pas dans la .csproj, parce qu'ils sont maintenant dans un projet.fichier json, puis ne pas obtenir tiré vers le vsix. La solution peut alors compiler, mais alors l'extension échoue avec "fichier non trouvé" des erreurs lors de l'installation dans Visual Studio (depuis les assemblées où elles ne sont pas copiés dans le VSIX).

J'ai essayé avec la section du manifeste de la sorte:

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

Mais il ne fonctionne pas, qu'il ne reconnaît pas les références de package.

Après quelques recherches, j'ai vu un problème similaire avec un PCL, cependant, sans une réponse et pas le même type de problème: MEF Avec la bibliothèque de classes Portable à l'aide de Microsoft Composition MEF2 jette fichier non trouvé exception

Dans la même note, ce qui semble être une solution acceptable: VSIX avec des Modèles de Projet et les Packages NuGet cependant, autant que j'ai compris, il s'agit d'utiliser le package lors de l'installation. En outre, il ne fonctionne pas pour notre cas, car ils ont besoin de spécifier la version du paquet et nous utilisons projet.json afin que nous puissions utiliser flottant versions (ie: 2.0.*)

Est-il un moyen de faire référence à ce projet.json références qu'il nous manque? Peut-être une solution de contournement? Les solutions que j'ai trouvé semblent tous ont besoin pour "coller" de DLL quelque part, qui flottants des versions n'est pas commode.

Merci d'avance pour toute aide ou d'entrée.

Edition/mise à Jour: Depuis VSIX pousse automatiquement toute assembly référencé dans la CSPROJ (et non pas le projet lui-même), en essayant d'obtenir la Dll à un niveau projet semble peu probable. Après plusieurs essais, je pense qu'une solution valable serait d'obtenir les assemblées du Dossier de Sortie. Cependant, à ma connaissance, VSIX ne dispose pas d'un moyen de le faire, ou est-il?

1voto

Rabid Penguin Points 683

Je ne suis pas sûr que je suis à la compréhension de votre question correctement, mais si vous essayez d'installer un Modèle de Projet par l'intermédiaire d'un VSIX et vous souhaitez le modèle de projet pour inclure tous les packages nuget lorsque vous l'utilisez, vous pourriez faire quelque chose comme cela.

Modifier votre Modèle de Projet de xproj fichier et ajouter les lignes suivantes:

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

Modifier votre Modèle de Projet de vstemplate fichier et ajouter les lignes suivantes dans le nœud du Projet:

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

Cela devrait être tout ce que vous devez faire. Maintenant, lorsque vous installez un modèle de projet, puis créer un nouveau projet à l'aide de ce modèle, il doit inclure tous les packages nuget qui étaient dans le projet.fichier json.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X