Отладчик Visual Studio не будет загружать символы в файлах, имеющих `(backtick) в имени файла. Кто-нибудь может объяснить это? - PullRequest
4 голосов
/ 03 февраля 2009

Я отлаживал некоторый код в Visual Studio 2005, когда заметил, что среда IDE не достигает точек останова в определенном универсальном классе. Я мог вручную войти в класс, но подсказки, показанные при наведении на ссылки, содержали только адреса памяти вместо обычных дружественных подсказок.

Оказывается, проблема в названии файла (!). В частности, когда имя файла содержит `(backtick, backquote), отладчик не будет загружать символы для этого файла. Обходной путь должен переименовать файл.

Во-первых, я использовал обратный тик для представления мощности универсального типа:

  • Foo.cs содержит неуниверсальный тип (например, Foo)
  • Foo`1.cs содержит универсальный тип с одним параметром типа (например, Foo )
  • Foo`2.cs содержит обобщение с двумя параметрами типа (например, Foo )

Эта ошибка (не так ли) возникает и в Visual Studio 2008.

Кто-нибудь может объяснить это поведение?

1 Ответ

5 голосов
/ 03 февраля 2009

У меня сложилось впечатление, что закулисные типы генерируются в типы, в названиях которых есть обратные метки. Скажем, у вас было List<int> и List<string>, за кулисами у вас было бы два класса. Один будет System.Collections.Generic.List'1, а другой System.Collections.Generic.List'2. Эти классы могут создаваться и храниться в файлах с одинаковыми именами (с расширением .cs).

Я предполагаю, что если вы введете галочку в названии вашего файла, вы будете портить этот механизм.

Я немного размышляю здесь, поскольку я не исследовал это, но это может быть что-то для вас, чтобы исследовать? :)

Удачи

РЕДАКТИРОВАТЬ - Пришлось использовать апострофы вместо обратных кавычек, поскольку они являются зарезервированными символами в этом редакторе:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...