VS2017 vstemplate自动安装Nuget包? [英] VS2017 vstemplate automatically install Nuget Package?

查看:15
本文介绍了VS2017 vstemplate自动安装Nuget包?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

Hi I have a Nuget Package and want to let it automatically install after project is created. I added this into my vstemplate file:

  <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 正在安装中.

It works it adds the Nuget to the Project after I created a new one from template, BUT it does not install the dlls from the Nuget Package. It just gives me a warning that there are unupdated/installed Nuget Packages in the project. And if I click on Update Now the Dlls are getting installed.

有没有办法自动做到这一点?我现在搜索了一整天,除了自己的 VSIX 项目,我什么也找不到.

Is there a way to do this automatically? I litterly searched a whole day now and besides an own VSIX Project I cant find anything.

推荐答案

有没有办法自动做到这一点?我乱七八糟地搜索了一个整体现在一天,除了自己的 VSIX 项目,我什么都找不到.

Is there a way to do this automatically? I litterly searched a whole day now and besides an own VSIX Project I cant find anything.

我相信可以实现.您可以修改您的projecttemplate.csproj文件,然后将Reference code添加到这些包中.而且你需要清楚,当你基于你的新模板创建项目时,VS会自动读取xxx.csproj,然后根据里面的信息恢复对应的nuget包.

l am sure that it can be realized. You can just modify your projecttemplate.csproj file and then add the Reference code to these packages. And you need to be clear that when you create a project based on your new template, VS will automatically read xxx.csproj and then recover the corresponding nuget package based on the information in it.

此外,需要注意的是,nuget 包可以通过两种方式引用,packages.configPackageReference.(真的取决于您要导入包的方式).

Besides, it is important to note that nuget packages can be referenced in two ways, packages.config and PackageReference.(It really depends on which way you want to import the package).

解决方案

1) 使用 PackageReference

a) 修改ProjectTemplate.csproj(在Solution Explorer中,如下图),然后添加:

a) modify ProjectTemplate.csproj(which is in the Solution Explorer just like the picture below) and then add this:

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

b) 发布此模板,然后您就可以使用它了.

b) publish this template and then you can use it.

2) 使用 Packages.config

a) 在您的项目根目录中创建一个名为 packages.config 的文件,然后在其中添加这些文件

a) Create a file called packages.config in your project root directory and then add these in it

<?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#项目模板项目,所以我使用了net472.

TargetFramework mainly means your framework version of your current project. For me, l created a net framework 4.7.2 c# project template project, so I used net472.

b) 右击文件,选择Property,将Build Action改为Content复制到输出目录Copy always 然后将 Include in VSIX 更改为 True.

b) right-click the file and select Property and change Build Action to Content, Copy to Output Directory to Copy always and then change Include in VSIX to True.

c) 如上所述在 projecttemplate.csproj 中添加这些文件:

c) add these files in projecttemplate.csproj as above:

<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>..packagesMyWebVisuDlls.1.0.5lib
et45Antlr3.Runtime.dll</HintPath>
    </Reference>
    <Reference Include="AspNet.ScriptManager.bootstrap, Version=3.3.6.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45AspNet.ScriptManager.bootstrap.dll</HintPath>
    </Reference>
    <Reference Include="AspNet.ScriptManager.jQuery, Version=3.3.1.0, Culture=neutral, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45AspNet.ScriptManager.jQuery.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.Charts.v16.1.Core, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.Web.v16.1.dll</HintPath>
    </Reference>
    <Reference Include="DevExpress.XtraCharts.v16.1, Version=16.1.14.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.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>..packagesMyWebVisuDlls.1.0.5lib
et45DevExpress.XtraCharts.v16.1.Wizard.dll</HintPath>
    </Reference>
    <Reference Include="getBeckhoffTpy, Version=4.3.1.0, Culture=neutral, PublicKeyToken=4481a3cada349683, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45getBeckhoffTpy.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AspNet.FriendlyUrls, Version=1.0.2.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45Microsoft.AspNet.FriendlyUrls.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.AspNet.Web.Optimization.WebForms, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45Microsoft.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>..packagesMyWebVisuDlls.1.0.5lib
et45Microsoft.CodeDom.Providers.DotNetCompilerPlatform.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.CSharp, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45Microsoft.CSharp.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.ScriptManager.MSAjax, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45Microsoft.ScriptManager.MSAjax.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.ScriptManager.WebForms, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45Microsoft.ScriptManager.WebForms.dll</HintPath>
    </Reference>
    <Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45Microsoft.Web.Infrastructure.dll</HintPath>
    </Reference>
    <Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45Newtonsoft.Json.dll</HintPath>
    </Reference>
    <Reference Include="Npgsql, Version=3.2.6.0, Culture=neutral, PublicKeyToken=5d8b90d52f46fda7, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45Npgsql.dll</HintPath>
    </Reference>
 <Reference Include="System.Web.Optimization, Version=1.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45System.Web.Optimization.dll</HintPath>
    </Reference>
 <Reference Include="TwinCAT.Ads, Version=4.2.163.0, Culture=neutral, PublicKeyToken=180016cd49e5e8c3, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45TwinCAT.Ads.dll</HintPath>
    </Reference>
    <Reference Include="WebGrease, Version=1.6.5135.21930, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
      <HintPath>..packagesMyWebVisuDlls.1.0.5lib
et45WebGrease.dll</HintPath>
    </Reference>
  </ItemGroup>

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

Usually, MyWebVisuDlls package has many dependencies. And using packages.config needs to list them which may be a little trouble.

简而言之,我推荐第一种使用PackageReference的方法,这是一种简单的实现方式.

In short, I recommend the first way to use PackageReference which is a easy way to realize it.

希望对你有帮助.

这篇关于VS2017 vstemplate自动安装Nuget包?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆