我知道已经有关于这个主题的多个问题,但它们似乎都已经过时了。澄清一下,我使用的是“新”VSIX 清单格式,并尝试遵循此处的官方说明:https ://docs.microsoft.com/en-us/nuget/visual-studio-extensibility/visual-studio-templates
我有一个项目模板和几个与之配套的项目模板。它们都依赖于部署应与 VSIX 本地捆绑的 NuGet 包。我检查了生成的 VSIX 文件,所有文件似乎都在正确的位置:
- 项目模板具有声明要安装哪些包所需的 XML:
<WizardExtension>
<Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
<FullClassName>NuGet.VisualStudio.TemplateWizard</FullClassName>
</WizardExtension>
<WizardData>
<packages repository="extension" repositoryId="VsixID.etc.etc">
<package id="Rx-Linq" version="2.2.5" />
</packages>
</WizardData>
repositoryID
匹配文件中的ID
属性.vsixmanifest
。Asset
每个包裹都有一个单独的条目,格式如下:
<Asset Type="Rx-Linq.2.2.5.nupkg" d:Source="File" Path="Packages\Rx-Linq.2.2.5.nupkg" d:VsixSubPath="Packages" />
我已经从 VSIX 安装
packages.config
的文件中删除了所有和所有包引用.csproj
(甚至从 VSIX 项目本身中删除,只是为了更好地衡量)。我检查了输出 VSIX,并且
Packages
在 VSIX 中确实有一个包含所有文件的.nupkg
文件夹。此文件夹确实已解压缩并复制到 Visual StudioExtensions
文件夹中。
尽管如此,当我使用模板创建一个新项目时,VS 会显示一条错误消息:无法从C:\users\<pathtoextensions>\Packages
.
问题是,这些.nupkg
文件实际上存在于错误消息所指的确切文件夹中。
我已经搜索了好几天了,但似乎找不到任何对实际有效的最佳实践的参考。这些 VSIX 清单似乎是针对传统packages.config
的做事方式,并且有关于如何扩展它们以PackageReference
替代使用的讨论。
任何人都可以就我们应该如何继续前进提供任何建议吗?包不再应该与 VSIX 一起部署吗?我们是否应该只用PackageReference
条目填写项目并让用户手动解决它们?
我觉得我在这里遗漏了一些基本的东西,任何见解都将非常有价值。
更新:我还在 NuGet github 存储库上打开了一个问题,因为在恢复存储在 VSIX 安装程序中的包时,这显然是 PackageRestore 功能的问题。此问题中提到的所有其他内容都按预期和预期工作,但包还原除外。