相关疑难解决方法(0)

如何在VSIX安装程序中包含NuGet包的程序集?

我正在创建一个Visual Studio 2017自定义签入策略扩展.我目前的解决方案结构如下:

VSIX解决方案结构

注意:我正在利用新的NuGet PackageReference方法,这就是没有packages.config文件的原因.


我相信我已经适当地设置了我的VSIX清单,因为当我没有引用时一切都很完美Microsoft.Net.Http(最初我是在值中硬编码而不是检索值).我不确定为什么Microsoft.TeamFoundationServer.ExtendedClient包含的NuGet包不会引起任何问题,而Microsoft.Net.HttpNuGet包也是如此.

我查看了调试文件夹以查看正在编译的内容,并且我看到每个程序集都被拉入,但是如果我解压缩VSIX(我将其重命名为*.zip并解压缩它),则只包含项目程序集; Nuget引用的程序集未打包在VSIX包中.

我遇到了一些资源,但似乎没有任何工作:

这些问题/答案中的每一个似乎都没有解决我的具体问题.


更新:

我相信用于生成VSIX包的工具可能不支持PackageReferenceNuGet 的新功能.如果我使用旧的packages.config功能,一切正常.我已经放入了UserVoice Ticket来支持新的NuGet功能.

vsix nuget checkin-policy visual-studio-2017

15
推荐指数
2
解决办法
2060
查看次数

VSIX与项目模板和NuGet包

我一直关注如何构建一个VSIX项目,该项目将添加一些自定义MVC项目类型:

http://www.asp.net/mvc/tutorials/mvc-4/custom-mvc-templates

我还想要包含一些额外的Nuget软件包,所以我在Nuget上关注这个页面,但它似乎是针对VS2010而且我在2012年工作.

我有项目建设,一切都在我的机器上工作.安装工作,出现新的项目类型,当我创建这种类型的新项目时,一切都很完美.

但是,当我将安装程序发送给同事时,事情就会中断.安装程序工作,他们看到新的项目类型,但在创建项目时,他收到有关无法在扩展节点中安装任何软件包的错误消息.我已经确认扩展的Product Id是正确的(我在测试期间故意在.vstemplate文件中将其格式化,并且它给出了完全不同的错误).我已经将包添加到扩展清单中,但它似乎没有什么区别.我还确认.nupkg文件已部署到%ProgramFiles(x86)%\ Microsoft Visual Studio 11.0\Common7\IDE\Extensions.

有关该怎么办的任何建议?

自定义项目的.vstemplate部分

<WizardExtension>
    <Assembly>NuGet.VisualStudio.Interop, Version=1.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</Assembly>
    <FullClassName>NuGet.VisualStudio.TemplateWizard</FullClassName>
</WizardExtension>
<WizardData>
    <packages repository="registry" keyName="AspNetMvc4VS11" isPreunzipped="true">
        <package id="EntityFramework" version="5.0.0" skipAssemblyReferences="true" />
        <package id="jQuery" version="1.8.2" />
        <!-- snip -->
    </packages>
    <packages repository="extension" repositoryId="SampleExtensionId">
      <package id="Unity" version="3.0.1304.0" targetFramework="net45" />
      <package id="Unity.WebAPI" version="0.10" targetFramework="net45" />
      <!-- snip -->
    </packages>
</WizardData>
Run Code Online (Sandbox Code Playgroud)

source.extension.vsixmanifest资产标签

<Assets>
    <Asset d:VsixSubPath="ProjectTemplates\CustomMVCTemplate" etc/>
    <Asset Type="Unity.3.0.1304.0" Path="Packages\Unity.3.0.1304.0.nupkg" />
    <Asset Type="Unity.WebAPI.0.10" Path="Packages\Unity.WebAPI.0.10.nupkg" />
    <!-- snip -->
</Assets>
Run Code Online (Sandbox Code Playgroud)

文件结构

  • 扩建项目
      • NugetPackage …

vsix nuget visual-studio-2012

5
推荐指数
2
解决办法
6188
查看次数