繁体   English   中英

将project.json包引用添加到VSIX

[英]Add project.json package references to a VSIX

在尝试添加对VSIX的引用时,它通常会从.csproj中的引用中提取它。 但是,如果引用不在.csproj中,因为它们现在位于project.json文件中,那么它们不会被拉到vsix。 然后解决方案可以编译,但是当安装到Visual Studio中时,扩展会因“找不到文件”错误而失败(因为未复制到VSIX的程序集)。

我尝试使用清单的部分,如下所示:

<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="*PROJECTNAME*" Path="|*ASSEMBLYNAME*|" AssemblyName="|*ASSEMBLYNAME*;AssemblyName|" />

但它不起作用,因为它无法识别包引用。

经过一些研究后,我看到了与PCL类似的问题,但是,没有答案而且问题类型不同: MEF With Portable Class library using Microsoft Composition MEF2抛出文件未找到异常

在同一个注释中,这似乎是一个可接受的解决方法: VSIX与项目模板和NuGet包,但据我所知,它意味着在安装过程中使用该包。 除此之外,它不适用于我们的情况,因为他们需要指定包版本,我们正在使用project.json,所以我们可以使用浮动版本(即:2.0。*)

有没有办法引用这个project.json引用我们缺少的? 也许是一种解决方法? 我发现的解决方案似乎都需要在某处“粘贴”de DLL,对于浮动版本来说并不方便。

提前感谢任何帮助或输入。

编辑/更新 :由于VSIX会自动推送CSPROJ中引用的任何程序集(而不是项目本身),因此尝试在项目级别获取DLL似乎不太可能。 经过多次尝试,我认为有效的解决方法是从输出文件夹中获取程序集。 但是,据我所知,VSIX没有办法做到这一点,还是做到了?

我不确定我是否正确理解你的问题,但是如果你试图通过VSIX安装项目模板,并且你希望项目模板在你使用它时包含所有它的nuget包你可以做这样的事情。

编辑项目模板的xproj文件并添加以下行:

<ItemGroup>
    <None Include="project.json"/>
    <None Include="project.lock.json"/>
</ItemGroup>

编辑项目模板的vstemplate文件,并在Project节点中添加以下行:

<ProjectItem ReplaceParameters="true" TargetFileName="project.json">project.json</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="project.lock.json">project.lock.json</ProjectItem>

这应该就是你需要做的。 现在,当您安装项目模板时,使用该模板创建一个新项目,它应该包含project.json文件中的所有nuget包。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM