【问题标题】:Should NuGet.VisualStudio.Interop.dll be in the GAC to use it as a wizard?NuGet.VisualStudio.Interop.dll 是否应该在 GAC 中以将其用作向导?
【发布时间】:2024-04-22 16:20:02
【问题描述】:

我正在创建一个项目模板。我想让它通过 NuGet 自动安装 unity 和 prism。

I read here how to do that。我像该页面所示设置了我的 vstemplate 文件:

 <WizardExtension>
    <Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
    <FullClassName>NuGet.VisualStudio.TemplateWizard</FullClassName>
  </WizardExtension>
  <WizardData>
    <packages>
        <package id="CommonServiceLocator" version="1.0" />
        <package id="Prism" version="4.1.0.0" />
        <package id="Prism.UnityExtensions" version="4.1.0.0" />
        <package id="Unity" version="2.1.505.0" />
    </packages>
  </WizardData>

似乎设置正确,但它不起作用。当我尝试使用我的模板时,我收到以下错误消息:

无法将所有必需的包添加到项目中。以下软件包无法从 'C:\Users\MyUser\AppData\Roaming\Microsoft\VisualStudio\10.0\ProjectTemplatesCache\MyTemplate.zip' 安装

我做了一些查找,要使向导工作,它需要安装在 GAC 中。我运行了这个命令:

gacutil.exe /l NuGet.VisualStudio.Interop

它返回了:

全局程序集缓存包含以下程序集:

项目数 = 0

所以它似乎不在 GAC 中。问题是:那么这对其他人有什么作用呢?如果它需要在 GAC 中,那为什么不自动存在呢?

如果不是,那为什么它不起作用(我很确定它需要在 GAC 中)。

注意:我确实在这里找到了那个 dll:

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft Corporation\NuGet Package Manager\1.6.21215.9133

【问题讨论】:

    标签: visual-studio-2010 nuget project-template


    【解决方案1】:

    我发现我错过了文档的这个重要部分:

    模板需要指定在哪里可以找到包 nupkg 文件。目前支持两个包存储库:

    嵌入在 VSIX 包中的包。
    嵌入在项目/项目模板本身中的包。

    因此,无法从实际的 NuGet 存储库中获取包。

    【讨论】:

      【解决方案2】:

      这个问题的答案:

      打开 Visual Studio > 工具 > 扩展和更新 > 选择在线链接,然后在右侧搜索栏键入 NuGet 包管理器。然后下载并安装。解决你的问题

      【讨论】:

        最近更新 更多