尝试将引用添加到VSIX中时,通常会从.csproj中的引用中提取它。但是,如果引用不在.csproj中,因为它们现在在项目中。然后,解决方案可能会编译,但安装到Visual Studio(由于未复制到VSIX的汇编)时,扩展程序会失败。
。我尝试了像这样的清单部分:
<Asset Type="Microsoft.VisualStudio.Assembly" d:Source="Project" d:ProjectName="*PROJECTNAME*" Path="|*ASSEMBLYNAME*|" AssemblyName="|*ASSEMBLYNAME*;AssemblyName|" />
但是它不起作用,因为它无法识别包装参考。
经过一些研究,我看到了PCL的类似问题,但是,没有答案,而不是相同类型的问题:使用Microsoft Coptions使用Microsoft Coptions Mef2抛出文件的MEF找不到异常
在同一注释中,这似乎是一个可接受的解决方法:带有项目模板和Nuget软件包的VSIX,但据我所知,它意味着在安装过程中使用该软件包。除此之外,它对我们的情况不起作用,因为他们需要指定软件包版本,并且我们正在使用project.json,因此我们可以使用浮动版本(即:2.0。*)
有没有办法参考此项目。也许是解决方法?我发现的解决方案似乎都需要在某个地方"粘贴" dll,对于浮动版本来说并不是那么方便。
预先感谢您的任何帮助或输入。
编辑/更新:由于VSIX会自动按CSPROJ中引用的任何汇编(而不是项目本身),因此试图将DLL在项目级别上获得DLL似乎不太可能。经过多次尝试,我认为有效的解决方法是从输出文件夹中获取组件。但是,据我所知,VSIX没有一种方法,或者是这样做的?
我不确定我是否正确理解您的问题,但是如果您尝试通过VSIX安装项目模板,并且您希望项目模板包括所有它的Nuget软件包当您使用它时,您可以做这样的事情。
编辑项目模板的XPROJ文件并添加以下行:
<ItemGroup>
<None Include="project.json"/>
<None Include="project.lock.json"/>
</ItemGroup>
编辑您的项目模板的Vemptlate文件,并在项目节点中添加以下行:
<ProjectItem ReplaceParameters="true" TargetFileName="project.json">project.json</ProjectItem>
<ProjectItem ReplaceParameters="true" TargetFileName="project.lock.json">project.lock.json</ProjectItem>
这应该是您需要做的。现在,当您安装项目模板时,然后使用该模板创建一个新项目,它应该包括Project.json文件中的所有Nuget软件包。