C# 将project.json包引用添加到VSIX

C# 将project.json包引用添加到VSIX,c#,visual-studio-2015,vsix,project.json,vsixmanifest,C#,Visual Studio 2015,Vsix,Project.json,Vsixmanifest,当尝试向VSIX添加引用时,它通常会从.csproj中的引用中提取它。但是,如果引用不在.csproj中,因为它们现在在project.json文件中,那么它们不会被拉到vsix。然后,解决方案可能会编译,但在安装到Visual Studio时,扩展失败,并出现“未找到文件”错误(因为其中的程序集未复制到VSIX) 我试过了舱单上的部分,如下所示: <Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:Proj

当尝试向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|" />

同样,这似乎是一个可以接受的解决方法:但是,据我所知,这意味着在安装过程中使用包。除此之外,它不适用于我们的情况,因为他们需要指定包版本,我们使用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文件,并在项目节点中添加以下行:

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

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

奇怪的是,它得到了这么多的支持。这里的解决方法不应该是:首先不要使用project.json吗?在接下来的几个月里,project.json将被删除,微软将开始将project.json的功能重新移植到旧的csproj中。为什么要使用project.json?是否需要Visual Studio扩展上的dotnet core?怎么用?为什么?这么多问题![在我之前的评论中,我将其删除]在我们的案例中,我们试图处理VS 2015 update 3使用比Roslyn更旧的System.Collections.Immutable版本的事实,因此我们遇到了这篇文章,解释了如何将该程序集的版本降级到1.1.37,以便构建使用Roslyn的扩展。在那一点上,我们开始遇到一个问题,即DLL没有与VSIX包一起部署,并在相同的场景中发现了这个问题。FWIW我听说project.json正在恢复到project.xxproj-参见这篇博客文章这里的用例是什么?您正在尝试通过VSIX安装项目模板,以及如何从packages.json安装一些软件包?我会尝试在某些后期构建步骤中将缺少的程序集添加到VSIX文件中(您可以在powershell中轻松完成此操作,因为VSIX文件只是一个ZIP文件),或者进行一些预构建步骤,修复浮动程序集,以便在项目中引用它们。对我来说,后者似乎更合理,因为我不喜欢修改VSIX文件。听起来不管你怎么解决它都会很不愉快。