VS2017 vstemplate自动安装Nuget包?

2024-03-08

您好,我有一个 Nuget 包,希望让它在项目创建后自动安装。 我将其添加到我的 vstemplate 文件中:

  <WizardExtension>
    <Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null</Assembly>
    <FullClassName>NuGet.VisualStudio.TemplateWizard</FullClassName>
  </WizardExtension>
  <WizardData>
    <packages>
      <package id="MyWebVisuDlls" version="1.0.5" />
    </packages>
  </WizardData>

在我从模板创建一个新项目后,它会将 Nuget 添加到项目中,但它不会安装 Nuget 包中的 dll。它只是向我发出警告,表明项目中存在未更新/安装的 Nuget 包。如果我单击“立即更新”,Dll 就会被安装。

有没有办法自动执行此操作?我确实搜索了一整天,除了自己的 VSIX 项目之外,我找不到任何东西。


有没有办法自动执行此操作?我确实搜索了一整天,除了自己的 VSIX 项目之外,我找不到任何东西。

我确信它可以实现。你只需修改你的projecttemplate.csproj文件,然后将参考代码添加到这些包中。而且你需要明确的是,当你基于你的新模板创建项目时,VS会自动读取xxx.csproj然后根据里面的信息恢复对应的nuget包。

Besides,需要注意的是nuget包可以通过两种方式引用,packages.config and PackageReference(这实际上取决于您想要导入包的方式)。

Solution

1) use 封装参考

a) 修改ProjectTemplate.csproj(位于解决方案浏览器就像下图一样)然后添加:

 <ItemGroup>
    <PackageReference Include="MyWebVisuDlls">
      <Version>1.0.5</Version>
    </PackageReference>
  </ItemGroup>

b) 发布此模板即可使用。

2) use 包.config

a) 创建一个名为packages.config在您的项目根目录中,然后将它们添加到其中

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="MyWebVisuDlls" version="1.0.5" targetFramework="net472" />
</packages>

TargetFramework主要是指你当前项目的框架版本。对我来说,我创建了一个net framework 4.7.2 c# project template项目,所以我用了net472.

b) 右键单击​​该文件并选择Property并改变Build Action to Content, Copy to Output Directory to Copy always然后改变Include in VSIX to True.

c) 将这些文件添加到projecttemplate.csproj中,如上所示:

<ItemGroup>
  <Content Include="packages.config">
  <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </Content>
 </ItemGroup>
<ItemGroup>
    <Reference Include="Antlr3.Runtime, Version=3.5.0.2, Culture=neutral, PublicKeyToken=eb42632606e9261f, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Antlr3.Runtime.dll</HintPath>
    </Reference>
    <Reference Include="AspNet.ScriptManager.bootstrap, Version=3.3.6.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\AspNet.ScriptManager.bootstrap.dll</HintPath>
    </Reference>
    <Reference Include="AspNet.ScriptManager.jQuery, Version=3.3.1.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\AspNet.ScriptManager.jQuery.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.Charts.v16.1.Core, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.Charts.v16.1.Core.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.Data.v16.1, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.Data.v16.1.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.Office.v16.1.Core, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.Office.v16.1.Core.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.Printing.v16.1.Core, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.Printing.v16.1.Core.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.RichEdit.v16.1.Core, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.RichEdit.v16.1.Core.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.Utils.v16.1, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.Utils.v16.1.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.Web.ASPxThemes.v16.1, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.Web.ASPxThemes.v16.1.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.Web.Resources.v16.1, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.Web.Resources.v16.1.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.Web.v16.1, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.Web.v16.1.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.XtraCharts.v16.1, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.XtraCharts.v16.1.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.XtraCharts.v16.1.Extensions, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.XtraCharts.v16.1.Extensions.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.XtraCharts.v16.1.UI, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.XtraCharts.v16.1.UI.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.XtraCharts.v16.1.Web, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.XtraCharts.v16.1.Web.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.XtraCharts.v16.1.Wizard, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\DevExpress.XtraCharts.v16.1.Wizard.dll</HintPath>
    </Reference>
    <Reference Include="getBeckhoffTpy, Version=4.3.1.0, Culture=neutral, PublicKeyToken=4481a3cada349683, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\getBeckhoffTpy.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AspNet.FriendlyUrls, Version=1.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Microsoft.AspNet.FriendlyUrls.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AspNet.Web.Optimization.WebForms, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Microsoft.AspNet.Web.Optimization.WebForms.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=2.0.1.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Microsoft.CSharp.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.ScriptManager.MSAjax, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Microsoft.ScriptManager.MSAjax.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.ScriptManager.WebForms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Microsoft.ScriptManager.WebForms.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Microsoft.Web.Infrastructure.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="Npgsql, Version=3.2.6.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\Npgsql.dll</HintPath>
    </Reference>
 <Reference Include="System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\System.Web.Optimization.dll</HintPath>
    </Reference>
 <Reference Include="TwinCAT.Ads, Version=4.2.163.0, Culture=neutral, PublicKeyToken=180016cd49e5e8c3, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\TwinCAT.Ads.dll</HintPath>
    </Reference>
    <Reference Include="WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..\packages\MyWebVisuDlls.1.0.5\lib\net45\WebGrease.dll</HintPath>
    </Reference>
  </ItemGroup>

通常,MyWebVisuDlls包有很多依赖项。而且使用packages.config需要列出它们,这可能会有点麻烦。

In short,我推荐第一种方法使用PackageReference,这是一种简单的实现方法。

希望它可以帮助你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

VS2017 vstemplate自动安装Nuget包? 的相关文章

随机推荐

  • MacOS 10.6 (Snow Leopard) 上的 sdl-config 安装在哪里

    安装后SDL http www libsdl org release SDL 1 2 14 dmg and SDL 开发 http www libsdl org release SDL devel 1 2 14 extras dmg在 Ma
  • 识别 R 函数和脚本的依赖关系

    我正在筛选一个包和使用该包的脚本 并希望识别外部依赖项 目标是修改脚本以指定library pkgName 并修改包中的函数以使用require pkgName 这样以后这些依赖关系就会更加明显 我正在修改代码以考虑每个外部依赖包 举个例子
  • Visual Studio 2012 中的 WebApi2

    如何在 Visual Studio 2012 中创建使用 WebApi2 的项目 我必须使用空白项目进行创建还是必须创建 MVC 项目 我不想安装 Visual Studio 2013 预览版 请帮忙 你需要安装适用于 Visual Stu
  • 在Mac上通过ssh连接到亚马逊AWS Linux服务器

    我创建了一个新的密钥对并将其下载到我的 Mac 然后使用该密钥对和我的安全组设置了一个新的 Amazon Linux AMI 服务器 现在我需要将下载的密钥对 pem 文件放入用户文件夹中的 ssh 文件中 然而 由于名称的原因 我无法创建
  • Swift 能抵抗 hooking 吗?

    Cycript 是一个基于控制台的应用程序 它是 Objective C 和 JavaScript 的混合体 Cycript 对于 iOS 应用程序的动态分析非常有用 如果您使用 Swift 编写任何方法或完整的 ipa 是否仍然可以在越狱
  • Zend_View_Helper 与 Zend View 部分脚本

    这是我的岔路口 我想在我的网页上显示某种按钮 并且我想在很多地方这样做 这个 按钮 实际上只是充当指向其他页面的链接 并且所有按钮实例都将转到一个页面 我希望所有按钮都相同 除了它们的大小之外 现在 我应该使用带有按钮 html 的部分脚本
  • Django 和 eBay 风格的多列表

    我正在尝试模仿 eBay 的多列表功能 基本上 eBay 允许用户指定他们选择的两种变体 例如size and color 每个变体都会有不同的数据 例如 Color red green Size 12 9 然后它会变得有点混乱 例如 qu
  • 在 Google Chrome 中激活麦克风时出错

    我尝试启用麦克风以允许用户录制音频 但出现此错误 未捕获的类型错误 无法读取未定义的属性 getUserMedia 在激活麦克风 navigator mediaDevices getUserMedia audio true video fa
  • iOS 7:标签栏控制器的不同导航项目

    我对 iOS 应用程序开发还比较陌生 目前我正在开发一个带有标签栏的小应用程序 我面临的问题是我希望每个选项卡都有不同的导航项目 我尝试了很多事情 但事情都不起作用 我正在使用原生 iOS 语言进行编程 在我的应用程序中 我有一个 AppD
  • 如何通过获取用户输入的日期来查找两个日期之间的日差

    我需要通过获取日期作为用户输入来查找两个日期之间的天数差异 我尝试使用获取日期raw input但我收到错误 我正在使用 2 7 版本的 python import time from datetime import date day1 i
  • 编译器会排除未使用的模板代码吗?

    当您使用具有多种方法 例如向量 的模板并编译代码时 编译器会丢弃未使用的方法中的代码吗 除非使用模板 否则不会实例化模板 因此实际上没有任何代码可以丢弃 标准说 14 7 1 10 实现不得隐式实例化不需要实例化的函数模板 成员模板 非虚成
  • 查找两个字符串之间的公共子串

    我想比较两个字符串并保留匹配的字符串 在比较失败的地方分开 所以如果我有 2 个字符串 string1 apples string2 appleses answer apples 另一个例子 因为字符串可能有多个单词 string1 app
  • emacs 是否可以突出显示 80 个以上的字符? [复制]

    这个问题在这里已经有答案了 我在这里看到了一些解决方案 如果超过 80 个字符 它们会突出显示整行 并且还会执行line wrap一旦该行变得大于 80 我想做的是编辑我的 emacs文件 以便超过 80 个字符的任何字符都呈现不同的背景
  • c 中的模拟器/生成的 switch 语句范围

    是否有 hack 来支持 c 99 或 Objective C switch 语句中的范围情况 我知道不支持这样写 switch x case 1 case 2 10 case 11 但我认为应该有一种方法可以使用 define 宏生成代码
  • 如何统计用户输入中字母的频率?

    当用户在 Ruby 中输入类似单词时 如何计算 supercaliforniamightly 中出现的字母的频率 并打印出星星或星号来计算出现的字母数量 这是我的代码 puts Enter string text gets chomp te
  • 解码 Pandas 中的 one-hot 数据帧

    我有 2 个数据框 数据如下 df1 id name age likes 0 A 21 rose 1 B 22 apple 2 C 30 grapes 4 D 21 lily df2 category Fruit Flower orange
  • ansible 2.13 中弃用了 hash_behavior 合并

    我们有很多 group vars webserver yml 文件 其结构如下 如果没有 hash behaviour merge 这些站点将不再被合并 并且不再可能以干净的方式配置多个虚拟主机 您建议如何解决该问题 项目1 yml sit
  • 用另一个包完全覆盖 NPM 包

    根据 NPM 官方文档 overrides in package json允许用另一个包完全覆盖一个包 覆盖提供了一种替换依赖树中的包的方法 与另一个版本 或完全另一个包 这些改变可以 根据需要将范围设定为具体或模糊 https docs
  • 为什么 Laravel 默认情况下通过 POST 注销(而不是 GET)? [复制]

    这个问题在这里已经有答案了 在 Laravel 应用程序的上下文中 POST 执行注销的意义是什么 POST 与 GET 相比是否存在一些安全性和 或会话特殊性 生成的相关部分make auth ul class dropdown menu
  • VS2017 vstemplate自动安装Nuget包?

    您好 我有一个 Nuget 包 希望让它在项目创建后自动安装 我将其添加到我的 vstemplate 文件中