简体   繁体   English

C++/WinRT natvis 在全新安装中不起作用

[英]C++/WinRT natvis doesn't work in fresh install

How can I trouble-shoot this?我该如何解决这个问题?

I combined the natvis example in this question with the C++/WinRT console template and succeeded in getting the natvis for the Matrix2d to work but not for the Uri .我将这个问题中的 natvis 示例与 C++/WinRT 控制台模板结合起来,并成功地让 natvis 让Matrix2d工作,但不能让Uri工作。

#include "pch.h"

using namespace winrt;
using namespace Windows::Foundation;

struct Matrix2d
{
    Matrix2d(int r, int c) : m_numRows(r), m_numCols(c), m_elements(r* c, 0) {}
    // Column first ordered elements
    std::vector<int> m_elements;
    int m_numRows;
    int m_numCols;
};


int main()
{
    init_apartment();
    Uri uri(L"http://aka.ms/cppwinrt");
    Matrix2d g(4, 3);

    printf("Hello, %ls!\n", uri.AbsoluteUri().c_str());
}

I'm unsure what natvis files cppwinrt is expected to produce (.natvis or.pdb) and where they would be located.我不确定 cppwinrt 预计会生成哪些 natvis 文件(.natvis 或 .pdb)以及它们的位置。

Below is the Natvis debug output.下面是 Natvis 调试 output。 It show that only my custom Natvis file (\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis) and the system-wide Natvis files (%VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers) are being loaded.它显示只有我的自定义 Natvis 文件 (\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis) 和系统范围的 Natvis 文件 (%VSINSTALLDIR%\Common7\Packages\Debugger\Visualizers) 正在加载。

Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\atlmfc.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\atlmfc.natvis。 Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\concurrency.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\concurrency.natvis。 Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\cpp_rest.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\cpp_rest.natvis。 Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\ObjectiveC.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\ObjectiveC.natvis。 Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis。 Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\Windows.Data.Json.natvis. Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\Windows.Data.Json.natvis. Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.devices.geolocation.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.devices.geolocation。 Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.devices.sensors.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\vis.windows.devices.sensors。 Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.media.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.media.natvis。 Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\windows.natvis。 Natvis: Parsing natvis xml file: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\winrt.natvis. Natvis:解析 natvis xml 文件:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\winrt.natvis。 Natvis: Parsing natvis xml file: C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis. Natvis:解析 natvis xml 文件:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis。 Natvis: Ignoring NatvisFile.natvis from ConsoleApplication2.pdb; Natvis:忽略来自 ConsoleApplication2.pdb 的 NatvisFile.natvis; a file of the same name already exists in a loaded project.加载的项目中已存在同名文件。 Natvis: C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(17,6): Successfully parsed expression '0' in type context 'Matrix2d'. Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(17,6):在类型上下文“Matrix2d”中成功解析表达式“0”。 Natvis: C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(18,6): Successfully parsed expression 'i < m_numRows' in type context 'Matrix2d'. Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(18,6):在类型上下文 'Matrix2d' 中成功解析表达式'i < m_numRows'。 Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1063,6): Successfully parsed expression '_Mypair._Myval2._Myend - _Mypair._Myval2._Myfirst' in type context 'std::vector<int,std::allocator >'. Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1063,6): 成功解析表达式'_Mypair._Myval2._Myend - _Mypair._Myval2。 _Myfirst' 在类型上下文 'std::vector<int,std::allocator >' 中。 Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1062,6): Successfully parsed expression '_Mypair._Myval2._Mylast - _Mypair._Myval2._Myfirst' in type context 'std::vector<int,std::allocator >'. Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1062,6): 成功解析表达式'_Mypair._Myval2._Mylast - _Mypair._Myval2。 _Myfirst' 在类型上下文 'std::vector<int,std::allocator >' 中。 Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1064,29): Successfully parsed expression 'size()' in type context 'std::vector<int,std::allocator >'. Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1064,29):在类型上下文“std”中成功解析表达式“size()”: :vector<int,std::allocator >'。 Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1066,52): Successfully parsed expression 'capacity()' in type context 'std::vector<int,std::allocator >'. Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1066,52):在类型上下文“std”中成功解析表达式“容量()”: :vector<int,std::allocator >'。 Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1067,53): Successfully parsed expression '_Mypair' in type context 'std::vector<int,std::allocator >'. Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1067,53):在类型上下文 'std::vector 中成功解析表达式'_Mypair' <int,std::分配器>'。 Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1069,15): Successfully parsed expression 'size()' in type context 'std::vector<int,std::allocator >'. Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1069,15):在类型上下文“std”中成功解析表达式“size()”: :vector<int,std::allocator >'。 Natvis: C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1070,23): Successfully parsed expression '_Mypair._Myval2._Myfirst' in type context 'std::vector<int,std::allocator >'. Natvis:C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\Packages\Debugger\Visualizers\stl.natvis(1070,23):在类型上下文中成功解析表达式 '_Mypair._Myval2._Myfirst' std::vector<int,std::allocator >'。 Natvis: C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(19,23): Successfully parsed expression '&m_elements[i * m_numCols],[m_numCols]na' in type context 'Matrix2d'. Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(19,23):在类型上下文 'Matrix2d' 中成功解析表达式 '&m_elements[i * m_numCols],[m_numCols]na'。 Natvis: C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(19,8): Successfully parsed expression 'i' in type context 'Matrix2d'. Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(19,8):在类型上下文 'Matrix2d' 中成功解析表达式 'i'。 Natvis: C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(20,12): Successfully parsed expression '++i' in type context 'Matrix2d'. Natvis:C:\Users\a\source\repos\ConsoleApplication2\ConsoleApplication2\NatvisFile.natvis(20,12):在类型上下文“Matrix2d”中成功解析表达式“++i”。

This is on a fresh install of Windows 10 and VS19 (16.8.2).这是全新安装的 Windows 10 和 VS19 (16.8.2)。

It looks like the cppwinrt team has removed the Visualizer from the vsix plugin:看起来 cppwinrt 团队已经从 vsix 插件中删除了 Visualizer:

Remove Visualizer from vsix #792 - https://github.com/microsoft/cppwinrt/pull/792从 vsix #792 中删除 Visualizer - https://github.com/microsoft/cppwinrt/pull/792

I don't know why they decided to remove the Visualizer, but I managed to get the Visualizer working again by我不知道他们为什么决定移除 Visualizer,但我设法让 Visualizer 再次工作

  1. download the cppwinrt project from https://github.com/microsoft/cppwinrthttps://github.com/microsoft/cppwinrt下载 cppwinrt 项目
  2. revert all changes specified at https://github.com/microsoft/cppwinrt/pull/792/commits/8a945371b26d3f1ed1a105e8ebb1e3c0e90a54bd (basically 3 files build_vsix.cmd, source.extension.vsixmanifest and vsix.csproj) revert all changes specified at https://github.com/microsoft/cppwinrt/pull/792/commits/8a945371b26d3f1ed1a105e8ebb1e3c0e90a54bd (basically 3 files build_vsix.cmd, source.extension.vsixmanifest and vsix.csproj)
  3. add "call.nuget\nuget.exe restore vsix\vsix.sln" to "build_vsix.cmd",otherwise I got an error at step 4 that some nuget packages are missing.将“call.nuget\nuget.exe restore vsix\vsix.sln”添加到“build_vsix.cmd”,否则在第 4 步出现错误,提示缺少一些 nuget 包。
  4. create with the file "build_vsix.cmd" using the 2019 developer prompt.使用 2019 开发人员提示使用文件“build_vsix.cmd”创建。
  5. remove the current C++/WinRT plugin and install the created plugin (at./vsix/bin/x86/Release/ )删除当前的 C++/WinRT 插件并安装创建的插件 (at./vsix/bin/x86/Release/ )

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

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