Подтвердить что ты не робот

Добавьте ссылки пакета project.json на VSIX

При попытке добавить ссылки на VSIX он обычно извлекает его из ссылок в .csproj. Однако, если ссылки не находятся в .csproj, потому что они теперь находятся в файле project.json, то их не тянет к vsix. Затем решение может скомпилироваться, но затем при сбое с файлом не обнаружены ошибки при установке в Visual Studio (так как сборки, которые не копируются в VSIX).

Я попытался с секцией манифеста следующим образом:

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

Но он не работает, поскольку он не распознает ссылки на пакеты.

После некоторых исследований я увидел подобную проблему с PCL, однако, без ответа, но не с тем же типом проблемы: MEF С помощью библиотеки Portable Class с использованием Microsoft Composition MEF2 выдает файл не найденное исключение

В той же заметке это похоже на приемлемое обходное решение: VSIX с шаблонами проектов и пакетами NuGet, однако, насколько я понял, подразумевается использование пакета во время установки. Кроме того, это не работает для нашего случая, так как им нужно указать версию пакета, и мы используем project.json, чтобы мы могли использовать плавающие версии (то есть: 2.0. *)

Есть ли способ ссылаться на эти ссылки project.json, которые нам не хватает? Может быть, обходной путь? Решения, которые я нашел, кажутся для всех, требуют "вставить" DLL где-нибудь, что для плавающих версий не так удобно.

Заранее благодарим за помощь или ввод.

Изменить/Обновить. Поскольку VSIX автоматически подталкивает любую сборку, на которую ссылаются в CSPROJ (а не на самом проекте), попытка получить DLL на уровне проекта кажется маловероятной. После многих попыток, я думаю, что допустимым решением было бы получить сборки из выходной папки. Однако, насколько мне известно, VSIX не имеет способа сделать это или делает это?

4b9b3361

Ответ 1

Я не уверен, что правильно понимаю ваш вопрос, но если вы пытаетесь установить шаблон проекта через VSIX и хотите, чтобы в шаблоне проекта были включены все его пакеты nuget, когда вы его используете, вы можете что-то сделать как это.

Отредактируйте файл проекта xproj и добавьте следующие строки:

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

Измените файл vstemplate Template Template и добавьте следующие строки в Project node:

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

Это должно быть все, что вам нужно. Теперь, когда вы устанавливаете шаблон проекта, затем создайте новый проект с использованием этого шаблона, он должен включать все пакеты nuget, которые были в файле project.json.