VS.NET: поддержка исходного сервера включена; Не удается получить исходный файл с исходного сервера

Я установил сервер символов для одного из моих текущих проектов. Во время ночной сборки я:

  • построить мой источник
  • применить метку к исходным файлам, которые использовались в сборке
  • индексировать файлы pdb с необходимой информацией
  • хранит файлы pdb на сервере символов MS

(На самом деле, я следовал этой статье: Source Server помогает вам устранять ошибки.

Теперь я ссылаюсь на библиотеку DLL, символы которой опубликованы в другом проекте. Я отлаживаю этот проект и хочу перейти к коду проекта, который опубликовал символы отладки.

Я настроил VS.NET, чтобы поддержка исходного сервера была включена. Когда я отлаживаю свой проект, я вижу (в окне Модули), что символы для моего ссылочного проекта действительно были загружены. Когда я хочу перейти к методу, который исходит из ссылочной библиотеки DLL, VS.NET выдает предупреждение, где я должен подтвердить, что VS.NET действительно может выполнить команду для получения исходного кода с исходного сервера.

Команда выглядит так:

ss.exe get -GL"c:\Users\... -GF -I-Y -W "$/MyProject/Source/..." -VL"specificversion"

(Я опущен полные пути для краткости).

Когда я запускаю команду, я получаю сообщение об ошибке "исходный код недоступен".

Когда я выполняю эту команду в командной строке, я получаю сообщение об ошибке:

Неверный путь DOS

Кажется, что VSS возвращает эту ошибку, когда целевой путь не существует. Действительно, локальный путь, куда должен быть помещен извлеченный исходный файл, не существует на моем диске. VSS должен его создать.

Как я могу убедиться, что VS.NET выдает команду, чтобы целевой путь был создан при получении исходного кода с исходного сервера?

РЕДАКТИРОВАТЬ: Мне удалось продвинуться немного дальше в моем квесте. На моем компьютере с исходным сервером я отредактировал vss.pm файл, и я изменил команду, которая написана в VSS_EXTRACT_CMD переменная, которая существует внутри "потока", записанного в файле PDB. Я изменил (Perl?) Код этого:

push(@stream, "VSS_EXTRACT_CMD=if not exist %vsstrgdir% mkdir %vsstrgdir% | ss.exe get ".
                                   "-GL\"%vsstrgdir%\" -GF- -I-Y ".
                                   "-W \"\$/%var3%\" -VL\"%var4%\"");

Итак, на самом деле я добавил к нему часть "если не существует... mkdir ..." и разделил две команды с помощью канала (|).

В VS.NET я указал, что команды SourceServer, которые выдают VS.NET, также должны быть записаны в окне вывода. Поэтому, когда я копирую команду, найденную в окне вывода, и выполняю эту команду в командной строке, каталог создается и файл извлекается. \ О /

К сожалению, когда VS.NET делает это, файл не извлекается, и каталог также не создается... Есть идеи, в чем может быть проблема?

Изменить: я проверил это на компьютере с Windows XP, и это работает. Я использую Windows Vista в офисе, а в Vista она не работает. Похоже, VS.NET не разрешено создавать целевой каталог?

0 ответов

Другие вопросы по тегам