我是Visual Studio扩展的新手,并尝试从GitHub获得一些示例以及一些有用的建议,并取得了一些成功。我正在尝试创建一个处理当前打开的解决方案的结构的ToolWindow,这在技术上对Microsoft.VisualStudio.LanguageServices
名称空间没有任何问题。该工具窗口本身的工作,只要我不从该命名空间中使用任何东西 - 特别是以下称为函数初始化在我的窗口的构造函数的解决方案的信息:Visual Studio扩展中的参考问题
private void ReloadSolutionInformation()
{
var componentModel = (IComponentModel)SmartOptionsEditorPackage.GetGlobalService(typeof(SComponentModel));
VisualStudioWorkspace workspace = componentModel.GetService<VisualStudioWorkspace>();
Solution solution = workspace.CurrentSolution;
this.Solutions.Clear(); // some collection of SolutionNode instances
// create and add custom tree node with solution information
var solutionNode = new SolutionNode(solution.FilePath);
this.Solutions.Add(solutionNode);
// recurse through projects etc.
PopulateSolutionWithProjects(solutionNode, solution);
}
当我运行扩展到调试它在Visual Studio 2017年的一个实验实例中,我得到下面的异常在构造函数,其中调用上述方法(原来是德国人,我的翻译可能不是100%准确):
的文件或程序集“Microsoft.VisualStudio.LanguageServices,Version = 2.3.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35”或其某个依赖项不能为f ound。系统找不到该文件。
堆栈跟踪:在MyAssembly.MyToolWindow.ReloadSolutionInformation() 在MyAssembly.MyToolWindow..ctor() 在MyAssembly.MyToolWindowPane..ctor()
文件名:Microsoft.VisualStudio.LanguageServices,版本= 2.3。 0.0,文化=中性公钥= 31bf3856ad364e35
此外,我注意到生成后以下警告:
CS1762:一个参考由于间接引用了由程序集“Microsoft.VisualStudio.LanguageServices”创建的程序集,因此创建了嵌入式互操作程序集'Microsoft.VisualStudio.Shell.Interop.10.0,Version = 10.0.0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a'版本= 2.3.0.0,文化=中立,PublicKeyToken = 31bf3856ad364e35'。考虑更改任一程序集上的“Embed Interop Types”属性。
随着生成输出详细设置为诊断,我只发现上述警告没有进一步的信息。检查构建输出目录,我看到包含所有引用的DLL,但除了Microsoft.VisualStudio.Shell.Interop.15.3.DesignTime.dll
之外,所有Microsoft.VisualStudio.*
DLL在VSIX中都缺失。据我了解互操作程序集,我认为它们是由VisualStudio提供的,所以我不需要嵌入它们,是吗?
对于每个参考,参考属性Embed Interop Types
设置为false。我试图根据我发现的一些建议来改变它,但那不起作用。我的目标是.Net 4.6.2。
经过太多令人沮丧的审判和特别错误的晚上,我仍然不知道,我该如何解决这个问题。这包括重新安装NuGet软件包,重新启动所有软件,重新设置实验实例,并逐步删除和重新添加引用作为本地DLL和NuGetPackage。在之前的编辑中,我发布了一个缩短的项目文件内容,并且由于输入字符限制,我现在必须将其删除。相反,这里是fusionlog的输出:
=== Zustandsinformationen vor Bindung ===
LOG: DisplayName = Microsoft.VisualStudio.LanguageServices, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
(Fully-specified)
LOG: Appbase = file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/
LOG: Ursprünglicher PrivatePath = NULL
Aufruf von Assembly : MyAssembly, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null.
===
LOG: Diese Bindung startet im LoadFrom-Load-Kontext.
WRN: Das systemeigene Image wird nicht im LoadFrom-Kontext durchsucht. Das systemeigene Image wird nur im Standard-Load-Kontext durchsucht, z. B. Assembly.Load().
LOG: Die Anwendungskonfigurationsdatei wird verwendet: C:\Users\me\AppData\Local\Microsoft\VisualStudio\15.0_15d7a44dExp\devenv.exe.config
LOG: Die Hostkonfigurationsdatei wird verwendet:
LOG: Die Computerkonfigurationsdatei von C:\Windows\Microsoft.NET\Framework\v4.0.30319\config\machine.config wird verwendet.
LOG: Verweis nach der Richtlinie: Microsoft.VisualStudio.LanguageServices, Version=2.3.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/x86/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/x86/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PublicAssemblies/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Microsoft/TemplateProviders/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/Debugger/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/CommonExtensions/Platform/DiagnosticsHub/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/x86/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/Program Files (x86)/Microsoft Visual Studio/2017/Community/Common7/IDE/PrivateAssemblies/DataCollectors/x86/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/USERS/ME/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/15.0_15D7A44DEXP/EXTENSIONS/AUTHOR/MY ASSEMBLY/1.0/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/USERS/ME/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/15.0_15D7A44DEXP/EXTENSIONS/AUTHOR/MY ASSEMBLY/1.0/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.DLL.
LOG: Download von neuem URL file:///C:/USERS/ME/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/15.0_15D7A44DEXP/EXTENSIONS/AUTHOR/MY ASSEMBLY/1.0/Microsoft.VisualStudio.LanguageServices.EXE.
LOG: Download von neuem URL file:///C:/USERS/ME/APPDATA/LOCAL/MICROSOFT/VISUALSTUDIO/15.0_15D7A44DEXP/EXTENSIONS/AUTHOR/MY ASSEMBLY/1.0/Microsoft.VisualStudio.LanguageServices/Microsoft.VisualStudio.LanguageServices.EXE.
你找到this ZIP file最小的解决方案的例子。在这里,我用一个新的VSIX项目创建了一个新的解决方案,通过向导添加了一个ToolWindow,添加了我的重要代码,解决了缺失的引用,开始调试并收到了旧的FileNotFoundException
。
有没有人在这里看到问题?提前致谢。
,似乎VS扩展找不到一些dll文件,我不知道是什么原因导致的问题。请通过OneDrive分享一个简单的演示。 –
您也可以使用fusionlog(https://docs.microsoft.com/en-us/dotnet/framework/tools/fuslogvw-exe-assembly-binding-log-viewer)来检查扩展程序在哪里查找这些程序集。 – utkarsh
@ ColeWu-MSFT:我会尽快分享一个演示。 –