Как обрабатывать похожие имена классов в разных решениях с помощью собственных визуализаторов

В моей компании мы работаем с нативными визуализаторами (файлы .natvis) для отладки дампов памяти в Visual Studio.

Поскольку у нас одинаковые имена классов для разных проектов, мы думаем о включении файлов .natvis в определения проектов, и это, кажется, работает: файлы .natvis внедряются в файлы символов (*.pdb) во время сборки, что это хорошо.

К сожалению, теперь кажется невозможным выполнить какую-либо настройку: из обоих файлов .natvis (файл на ПК и файл в файле символов) файл в файле символов получает приоритет, что делает его неизменяемым, поэтому никакая настройка не представляется возможной. можно больше.

Чтобы иметь настраиваемые файлы .natvis, мы думаем об изменении последовательности .natvisreload. Возможно ли это или есть другой подход для этого (например, добавление параметров в команду .natvisreload)?


person Dominique    schedule 17.11.2017    source источник
comment
Не могли бы вы встроить файл natvis в отдельный модуль вместо основного?   -  person KonstantinL    schedule 20.11.2017
comment
Да, это возможно, но теперь у меня проблема, что во время компоновки он встраивается в файл символов, что делает невозможным его изменение впоследствии.   -  person Dominique    schedule 20.11.2017
comment
Затем вы просто замените один модуль другим (это даст вам разные pdb с разными natvis).   -  person KonstantinL    schedule 21.11.2017
comment
@KonstantinL: ситуация следующая: клиент присылает мне дамп, который я хочу исследовать. Иногда это означает, что мне нужно искать определенные записи в окне просмотра, что проще всего, если я могу изменить *.natvis в соответствии с содержимым дампа (например, у клиента есть проблема с массивами, а у других клиентов нет). проблемы с массивами). Изменяя *.natvis, я могу решить, получать или нет информацию, относящуюся к массиву, но если .natvisreload не учитывает мои ручные изменения (из-за *.natvis в файле символов), эта процедура не может быть сделано.   -  person Dominique    schedule 21.11.2017
comment
Возможно, другой подход — просто исключить natvis из PDB и использовать отладчик с открытым проектом. Вы можете сделать это, установив для файла natvis значение «исключено из сборки».   -  person nneonneo    schedule 22.11.2017


Ответы (1)


Кажется, что на мой вопрос невозможно ответить, как указано в схеме natvis, которую я только что нашел на своем ПК:

Файлы natvis, являющиеся частью загруженного проекта, всегда будут иметь приоритет над файлами в пользовательском каталоге natvis.

Кажется, что можно различать разные решения (приложения) в одном и том же файле natvis, как вы можете видеть здесь:

  <!-- Solution1 -->
  <Type Name="Class_Name">
    <Version Name="Solution1.exe" Min="1.0" Max="99.99"/>
    <DisplayString>Class_Name Solution1 {m_strName}, {m_iID} </DisplayString>
  </Type>

  <!-- Solution2 -->
  <Type Name="Class_Name"> // in Solution2 Class_Name has no strName
    <Version Name="Solution2.exe" Min="1.0" Max="99.99"/>
    <DisplayString>Class_Name Solution2 identifier {m_iID}</DisplayString>
  </Type>
person Dominique    schedule 22.11.2017