Загрузка символов visual studio как отключить

Обновлено: 07.07.2024

Я попробовал следующее:

  • Убедитесь, что конфигурация отладки, флаг отладки и полная информация отладки установлены на всех сборках.
  • Удалите все папки bin и obj и все библиотеки DLL, связанные с проектом, со всей моей машины.
  • Воссоздать проекты, вызывающие проблему с нуля.
  • Перезагрузка.

У меня есть два проекта WinForms в решении. Один из них загружает отладочную информацию, другой - нет. Они оба ссылаются на сборку, в которой я пытаюсь получить отладочную информацию точно таким же образом в файле проекта. Любые идеи?

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

При отладке перейдите к представлению Отладка, Windows, Модули. Это покажет информацию о загруженных модулях и статус символа. Вы можете щелкнуть правой кнопкой мыши по модулю и попытаться загрузить символы из другого места. Хороший вопрос о сборках, не загруженных до тех пор, пока они не понадобятся. Отладчик покажет, что точка останова не будет достигнута, но дисплей изменится / ваша точка останова будет достигнута после загрузки сборки. Обходным решением этой проблемы пользовательского интерфейса было бы вызвать сборку при запуске программы, чтобы принудительно загрузить сборку. У меня была та же проблема, и я заметил, что для этой конфигурации сборки, которой у меня не было <DebugSymbols>true</DebugSymbols> в VS2015, я добавил ее вручную, и она работала нормально. Удаление файла .suo могло бы решить эту ужасную проблему в моем проекте

Начните отладку, как только вы достигли точки останова или использовали ее Debug > Break All , используйте Debug > Windows > Modules . Вы увидите список всех сборок, которые загружены в процесс. Найдите тот, для которого вы хотите получить отладочную информацию. Щелкните правой кнопкой мыши и выберите «Символ загрузки информации». Вы получите диалог, в котором перечислены все каталоги, в которых он искал файл .pdb для сборки. Проверьте этот список по фактическому местоположению .pdb. Убедитесь, что он не находит старый.

В обычных проектах сборка и ее файл .pdb должны всегда копироваться IDE в ту же папку, что и ваш .exe. Папка bin \ Debug вашего проекта. Убедитесь, что вы удалили один из GAC, если вы играли с ним.

По сути, это было проблемой в моем случае. У нас был посткомпиляция, из-за которой он не считался «кодом пользователя» . теперь я должен посмотреть, что с этим случилось, но я подтвердил, что без модификаций посткомпиляции символы загружаются. @ Hans спасибо, сэкономил мне несколько минут! отправляет виртуальное пиво Как подсказка, включите ваши исключения, чтобы они ломались, где вы хотите (если вы не можете поставить точку останова в начале процесса) . Затем вы следуете рекомендациям Хана по отладке> Windows> Модули. Найдите проект, в который вы пытались войти, и посмотрите на PATH. если он говорит «C: \ windows \ assembly», то это указывает на dll GAC, а НЕ на проект . у меня была активная конфигурация моего решения для Release, вернув ее обратно на Debug, я решил мою проблему. Этот ответ помог мне «вспомнить», что искать

Сначала попробуйте перестроить свой проект, щелкнув правой кнопкой мыши проект> Перестроить. Если это не сработает, попробуйте очистить проект (щелкните правой кнопкой мыши проект> очистить)

Если это не сработало, проверьте это:

(шаг 6 генерирует файлы .pdb, это символы отладки)

Убедитесь, что для [Debug Info:] установлено значение [full] - исправьте это для меня! У меня есть несколько конфигураций, настроенных для моего проекта, новые, которые я добавил, не имели этого набора. Это сработало для меня! Но вместо [полного] я смог сделать только для pdb Я также должен был убедиться, что это не Properties > Build > Optimize code было проверено .

Просто что-то простое попробовать - возможно, вы уже пробовали это. Щелкните правой кнопкой мыши Solution в обозревателе решений, выберите «clean solution», это удалит все скомпилированные и временные файлы, связанные с решением .

Перестройте решение и попробуйте снова выполнить отладку.

У меня также были проблемы с точками останова нескольких проектов в решении - некоторые скомпилированы как x86, некоторые как x64.

Как вы исправили точки останова с несколькими проектами в решении - некоторые скомпилированные как x86, некоторые как x64? Для меня это было просто "Построить" . "Чистое решение"

Отключите опцию «Просто мой код» в настройках «Отладка / Общие».

Да, на проекте Windows Phone 8 с пользовательской конфигурацией сборки, это то, что он сделал для меня. Работал для меня с Windows Phone 8.1 и VS Community 2015. Просто чтобы прояснить: в VS 2017 этот параметр находится конкретно в диалоговом окне «Инструмент, параметры» под панелью «Отладка, Общие» (если быть точным, нет панели «Отладка») Флажок называется «Включить только мой код», а не «Просто мой код». Это работает для меня, однако я не вижу значения переменной, когда hover или shift + f9 получают ошибку. Невозможно получить значение local или аргумента, поскольку оно недоступно по указателю этой инструкции, возможно, потому что оно было оптимизировано

Перекрестное размещение этого исправления от Hans K, которое я нашел в аналогичной теме >> ЗДЕСЬ << :

Щелкните правой кнопкой мыши по решению -> Свойства

Посмотрите под Общие свойства -> Startup Project

Выберите несколько проектов запуска

выберите Начать действие над проектами, которые нужно отладить.

Это исправило это для меня. Я думаю, что ранее кто-то пытался подключить отладку к локальному серверу IIS вместо отладочной версии IIS, которую использует visual studio. Если вы удалили файл .suo, вы можете потерять настройки решения, выбранные здесь, и вам придется их заново устанавливать Сегодня я снова проверил эти параметры после успешной отладки и обнаружил, что мои стартап-проекты каким-то образом превратились в один стартовый проект. Это стоит двойной проверки.

Выбранный ответ привел меня к решению моей проблемы. Но мне нужно сделать еще несколько вещей:

Даже с выбранным «Отладка» в раскрывающемся списке:

введите описание изображения здесь

А в проекте Properties> Build:

введите описание изображения здесь

Visual Studio не загружал символы в конкретный проект. Таким образом, в этом раскрывающемся списке я выбрал «Диспетчер конфигурации» и увидел, что параметры моего веб-проекта были неверными:

введите описание изображения здесь

введите описание изображения здесь

Затем я установил это в «Отладка», и он начал генерировать .pdb файл. НО мне нужно вручную скопировать PDB и DLL и положить в папку, которую искал VS (вот где мне помог выбранный ответ):

введите описание изображения здесь

Ключевым для меня было то, что флажок «Deploy» не был отмечен, поэтому pdb не переустанавливался после сборки

Debug > Windows > Modules , Чтобы увидеть , какие модули были загружены поставить меня в правильном направлении.

Это была моя проблема, папка должна быть заполнена битыми DLL, которые загружались в качестве предпочтения. У меня была похожая проблема, когда у меня уже было установлено это приложение, и оно загружало эту DLL вместо той из моего проекта без связанного файла PDB. После удаления старого приложения проблема была решена для меня. Спасибо!

Просто следуйте инструкциям ниже:

  • Перейти к отладке из строки меню
  • Нажмите на Присоединить к процессу
  • Рядом с опцией Присоединить к , нажмите на Выбрать кнопку
  • Выберите тип кода окно
  • Теперь выберите параметр « Автоматически определять тип кода для отладки» и нажмите кнопку «ОК».

Исправлена ​​ошибка отладки

Для тех, кто попробовал все на этой странице, я исправил свою проблему, переключившись на «Managed (v4.5, v4.0) code»! Переключение с «Автоматически определять тип кода для отладки» на «Управляемый (v4.6, v4.5, v4.0)» работал для меня. У меня есть решение с 2 библиотеками классов, одна из которых доступна через COM, обе предназначены для фреймворка 4.6.1.

Иногда, даже несмотря на то, что он выдает эту ошибку, он breakpoint все равно получает удар, поэтому просто игнорируйте ошибку. Это происходит довольно часто в Views Ан MVC web app .

На самом деле это должно быть где-то наверху. Я потратил много времени, выполняя все ответы выше, но точка останова действительно будет достигнута. Просто проверьте :) Кроме того, это было настольное приложение WPF. Aspx, по-видимому, компилируется по требованию, поэтому информация об Также для UnitTesting - вам нужно подождать несколько секунд, а затем его ударили. спасибо . копаться в течение получаса и просто понял, что точка останова все еще получает удар .

Проверьте, отсутствует ли ваш файл .pbd в папке bin / Debug. Если это так, перейдите в «Свойства» вашего проекта, выберите «Построить», а затем «Дополнительно» в нижней части. В появившемся окне выберите «полный» в разделе «Отладочная информация». Это была моя проблема, и я решил ее.

Показывает, где найти настройки

Я бы посоветовал всем, кто заходит на эту страницу, убедиться, что генерируется pdb, так как это было проблемой для меня. Спасибо! "только для pdb" (а не полный) было достаточно. Также «Advanced» - это кнопка внизу Build. Спасибо, это исправило это для меня после того, как я сделал новые преобразования Web.config и удалил стандартные конфигурации (например, Web.Debug.config), которые предоставляет VS 2017. Перепробовал множество других опций (потрачено почти 2 часа) Этот «полный» вариант исправил мою проблему. Спасибо!

В моем случае «Оптимизировать код» было проверено в свойствах моего проекта. Это заставило VS видеть мою сборку как «не мой код», и, в свою очередь, не загружало символы для нее.

Расположение флажка «Оптимизировать код»

Решение было снять это.

Это тоже была моя проблема, и я прошел все вышеупомянутые решения один за другим, ничего не получалось. Я отключил эту опцию, чистое решение, восстановленное решение и т. Д. VS всегда считал модуль «Оптимизированным». Единственный способ заставить VS обновить отладочную информацию - увеличить версию сборки модуля.

Просто проверьте, находится ли ваше решение в режиме выпуска.

Потребовалось почти 4 часа, чтобы выяснить эту проблему. спасибо

Попробуйте запустить Visual Studio в качестве администратора в Windows.

В итоге мне нужно было запустить msvsmon в качестве администратора на удаленной машине. Это не решение, которому люди должны следовать. Если это решит проблему, вам следует сосредоточиться на том, зачем вам нужны права администратора, чтобы VS мог читать содержимое файла .pdb вашего проекта. @ Джазимов Я не согласен. Принимая во внимание, что я хотел бы провести время, исследуя это, в моем случае это решило мою проблему и позволило мне продолжать работать, поскольку я уверен, что это сделало и для других. Если вы хотите изучить его и улучшить этот ответ, не стесняйтесь, вот для чего он нужен. Чтобы быть ясным: я понимаю, что это решило вашу проблему с Visual Studio, это не то, что я оспаривал. Я оспариваю рекомендацию о том , как другие принимают работает в IDE , как в растворе , а не просто в растворе. Если запуск среды IDE в качестве администратора устраняет проблему, то эту информацию следует использовать для устранения фактической основной причины, чтобы в среде IDE не требовались права администратора для правильной работы.

В моем случае я пытаюсь отладить в режиме реверсирования. Как только я переключаю его в режим отладки. Работает

Вам нужно включить «Генерировать отладочную информацию» в настройках компилятора

Это так же, как ответ juFo - Project> Properties> Build> Advanced> Debug Info> Full (или только для pdb) Послушай Джереми Томпсена. Это исправило проблему для меня.

-> Параметры отладки -> Общие -> Снимите флажок для " Enable Just My Code "

Это сработало для меня.

Похоже, что это может быть настройка по умолчанию, которую стоит проверить, обновляя VS до более новой версии (как это случилось со мной).

Параметр «Начать отладку, отладка + модули Windows +» не существует в выпуске Microsoft Visual Studio Express 2013.

Снятие отметки «Использовать управляемый режим совместимости» в меню « Параметры» Отладка исправляет это.

Проверьте свой Solution Configuration выпадающий список. Убедитесь, что вы выбрали Debug , а не Release .

Я перепробовал все вышеупомянутое, но ничего не получалось. [Очистить решение, проверить файлы PDB и т. Д.]

Даже публикация того же решения не решила проблему.

Затем я вернулся к тому, что я обычно делаю, чтобы решить (обмануть эту упрямую Visual Studio)

Все, что я сделал, это сделал преднамеренное изменение в коде и опубликовал решение. Затем я отменил изменения и опубликовал снова.

Вуаля [PDB-файлы, избавленные от злых духов] .. Не умное решение, но это сработало . - |

Только веб-приложения (IIS Express):

  • Щелкните правой кнопкой мыши IIS Express Tray и закройте IIS.
  • Чистый раствор

Лоток IIS

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

Возможно, Visual Studio не может скопировать и ЗАМЕНИТЬ существующие файлы (.dll и .pdb) рядом с .exe, поскольку там есть другие. Так что, если я удалил вручную, то VS может создать новый рядом с .exe.

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

Если у Вас есть какие-либо проблемы, пожалуйста, для начала убедитесь что Вы выполнили все шаги. В ТОЧНОСТИ как написано у нас. Если все же ничего не помогает, обратите внимание на секцию FAQ в конце документа. Если и это не заработает, пишите Ваши комментарии, мы будем решать их все вместе.

Основная настройка

Для начала отмечу, что если у Вас установлена MS VS 2008 Express Edition, то у Вас это работать не будет.

1) Установите Visual Studio QFE. Это исправление просто обновляет DLL, которые являются частью отладчика Visual Studio, который выбирает исходные файлы. Все подробности оп исправлениям читайте на странице загрузки.

2) Запустите Visual Studio и выберите Tools > Options > Debugging > General. Если Вы работаете над Visual Basic Profile, Вам необходимо установить флажок в нижней части диалога Options Dialog, «Show All Settings» перед тем как продолжить.

  • Выключите «Enable Just Me Code (Managed only)»
  • Включите «Enable source server support»

Все, установка произведена!

Отладка внутри исходного кода Framework

Запускаем отладку решения. Когда работа программы остановится в поставленной нами точке останова, перейдите в окно Call Stack. В стеке вызовов щелкните правой кнопкой мыши по строке, начинающейся с System.Windows.Forms.dll и выберите Load Symbols. Надеемся что у Вас хороший Интернет канал. В противном случае запаситесь заранее булочками и чаем. Файлы, подлежащие загрузке весят порядка 10 мегабайт. Обратите внимание, что Visual Studio не будет отвечать все это время (минус им в карму. Хороший тон — индикатор загрузки. А вдруг висит? Тогда убить процесс. А если не висит? Убивать — время жалко). Однако такая загрузка производится лишб однажды и будет храниться у Вас на компьютере в каталоге с кэшем, указанным Вами выше.

Эти действия позволят загрузить символы из DLL с севрера, и Вы увидете что все строки, обозначающие вызовы внутри System.Windows.Forms.dll станут черными, т.е. доступными. Также станут доступными и номера строк. Помните, что каждый раз, когда Вам понадобится посмотреть на символы, нужно будет щелкнуть правой клавишей мыши и выбрать Load Symbols.

Итак, с этого момента загружены все символы для System.Windows.Forms.dll и теперь можно смотреть его код. Код вы можете просматривать совершенно также как и во время обычной отладки своего кода. Для этого, как обычно, щелкните дважды по строке CallStack либо зайдите внутрь методов сборки по (F11). Когда Вы в первый раз попробуете просмотреть код, то Вам предложат лицензию, на основани которой Вам разрешено его читать, и если Вы согласны с ней, нажмите Accept, после чего исходный код будет загружен.

Теперь для всех сборок, в которых Вы захотите отлаживаться, просто повторите все те шаги, которые описаны выше. Если Вам понадобилось отладки тех сборок, которых нет в Call Stack, откройте окно Modules и загрузите символы оттуда.

Теперь Вы можете в примере выше зайти в код DrawRectangle по F11.

Для продвинутых пользователей

Как правило, при каждом сеансе отладки, Visual Studio пытается загрузить символы для каждой DLL, которая загружается в отлаживаемый процесс. Чтобы найти информацию по символам, она порсматривает все пути, указанные в Options > Debugging > Symbols. Но есть проекты, которые используют очень много библиотек DLL, для которых нет никакой информации по символам. В этих случаях процесс запуска отладки будет очень долгим. Это основная причина, из-за которой мы советуем Вам использовать загрузку символов по требованию пользователя.

Существует, однако, способ сделать загрузку символов автоматически (что по сути, избавляет от шага «Load Symbols»), что увеличивает общую производительность. Этот флажок имеет смысл устанавливать только продвинутым пользователям системы, поскольку потом Вам придется довольно часто возвращаться в этот диалог. Кстати, для того чтобы быстро в него зайти, выберите «Symbol Settings. » в контекстном меню на изображении повыше.

Основа этого — получить все символы, скачать их и храниьб локально. Для этого отключите флажок «Search the above locations. ».

После этого запустите свой проект в отладчике. Да, кстати, извините, совсем забыл сказать. Наберитесь терпения, чаем и булочками. В зависимости от соединения скачивать студия будет либо долго, либо очень долго. Всего понадобится скачать порядка 50 мегабайт. И т.к. все это будет закешировано, то эот будет единовременно.

Как только этот процесс завершится, можно остановить отладчик и снять источник с адресом сервера и нажать OK:

После этих шагов все символы будут загружаться автоматичсеки, и Вы будете иметь возможность вмешиваться в стек вызовов без ранних ограничений. Обратите внимание, что если Вы будете работать над другим проектом, в котором не будет информации по загруженным символам, порсто повторите все эти шаги ;)

Также проверьте ваш «C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE» (или то место, куда Вы установили Visual Studio) файл с именем symsrv.no. Если этот файл существует, переименуйте его в symsrv.yes.

2) Когда я пытаюсь зайти отладчиком внутрь исходного кода, то получаю диалог «Source is not available for this location»
Во-первых посмотрите пункт (2) в FAQ. чтобы убедиться что все символы были загружены успешно. В этом можно убедиться, посмотрев в окно Modules, в колонку статуса символов. Если символы загружены, проверьте следующее:
Если Вы настроили Microsoft Symbol Server в прошлом, и Вы загрузили символы для этой DLL, которые не содержат исходных кодов. Попробуйте указать другое положение кэша либо удалите существующий кэш, после чего поврите команду «Load Symbols». Посмотрите также FAQ (3) для получения дополнительной информации.
Убедитесь лишний раз в том что Вы включили флажок «Enable Source Server» в окне Tools > Options > Debugging > General.
Убедитесь что папка, которая настроена на сбор кэша символов, имеет разрешения на чтение и запись
Если у Вас установлена _NT_SYMBOL_PATH, она будет переопределять все эти настройки. За подробностями сюда

3) Я также использую Microsoft Symbol Server для загрузки символов. В чем разница?

Microsoft Symbol Server обеспечит Вас символами без предоставления какой-либо информации в них. Эта информация будет удалена перед публикацией. Чтобы использовать и Reference Source path и Micrososft Symbol Server это расположение Reference Source path первым в списке

Однако если у Вас Microsoft Symbol Server настраивается через _NT_SYMBOL_PATH, помните, что _NT_SYMBOL_PATH перекрывает эти настройки.

4) Есть ли поддержка 64-разрядной ОС?

Да, при условии наличия 64-разряднных версий PDB. Здесь стоит отметить что есть DLL, которые работают на различных архитектурах. Потому для них понадобится всего одна PDB.

5) Как мне установить точки останова в коде Framework?

Изначально, Visual Studio требует чтобы код в точности соответствовал PDB файлу. Хотя довольно часто PDB файлы изменены не значительно. Например, автор добавил строки с авторскими правами. Но код по-прежнему можно легко отлаживать. Просто установите точку останова (появится не полностью закрашенная точка) и укажите расположение PDB файла (контекстное меню от точки останова, позиция Location. )

Затем установите флажок, указанный ниже:

После этих действий Вы сможете спокойно продолжить работу.

6) Почему такие функции как «Go To Defenition» не работают?

Потому что эта информация создается на периоде работы с кодом, а не во время исполнения.

7) Почему некоторые члены или локальные переменные не доступны? Почему я не могу заходить внутрь некоторых методов или ходить по некоторым строчкам кода?

8) Почему так долго загружаются PDB файлы?

Потому что их много, и среди них есть файлы под 1 мегабайт.

9) Можно ли открыть и посмотреть их через браузер?

Предназначен для скачивания всех символов и исходных кодов. Работает из командной строки и доступен в исходных кодах.

Я работаю над проектом ColdFusion некоторое время, и Visual Studio начал вести себя как минимум странно.

Я заметил, что когда я начал отладку, он создал проект, начал развертывание, и развертывание закончилось, и он начал загружать символы для моего проекта.

Но это было очень медленно, и я не знаю, почему он начал делать этот шаг. Что я мог сделать?

Необходим ли этот шаг загрузки символа? Как я могу отключить это?

В диалоге Сервис -> Параметры -> Отладка -> Символы не добавляется местоположение файла символов (.pdb). И я указал в каталоге отладки моего проекта на поле ниже, и я установил флажок «Искать в каталоге выше, только когда символы . ». Как мне настроить этот диалог, чтобы отключить загрузку символов?

Я посмотрел в окне Модули, какие символы загружены, но он мне ничего не говорит. В чем проблема?

введите описание изображения здесь

Обычно символы должны кэшироваться, и их загрузка может занять совсем немного времени; единственный раз, когда вы заметите, что загрузка символов происходит медленно, это если символы загружаются с серверов символов Microsoft, что очень очень медленно, например (не всегда очень медленно, но медленно тем не менее), поэтому один хороший способ попытаться решить эту проблему - удалить кэш символов, просто перейдите в «Отладка -> Параметры -> Отладка -> Символы» и щелкните пустой кэш символов, если это не работает Может быть, это еще одна проблема, надеюсь, это будет полезно для кого-то, поскольку вопросу уже 3 года (: Пользователи Visual Web Developer 2010 Express могут нажать клавиши CTRL + SHIFT + F9 и запрос «Удалить все точки останова?». будет появляться. Вам нужна, по крайней мере, одна активная точка останова (не уверен, если проблемные фоновые точки останова отсчитывают). Спасибо! Гораздо быстрее сейчас . Действительно, это работает! Невероятно! Кто-нибудь уже сообщал об этой очевидной ошибке в Microsoft? Ваше начало, это сводит меня с ума в течение нескольких дней. Бесконечно благодарен! Ну, это было неожиданно! Это действительно сработало. Вы спасли мой день, большое спасибо!

Другая причина медленной загрузки - если вы отключили «Включить только мой код» в параметрах отладки. Чтобы включить это, перейдите по ссылке:

Убедитесь, что это проверено.

Это тот, который исправил это для меня . не ответ "Удалить все точки останова". Это примерно худший вариант в Visual Studio. Гораздо лучше просто отключить загрузку символов, чтобы вы могли видеть броски исключений и кадры стека, в которых просто отсутствуют символы. (Просто какое-то трудно читаемое число вместо имени). Конечно, я обычно работаю над кодом сайта, поэтому подо мной много IIS, которые могут потерпеть неудачу. Обычно просто отменяет выбор серверов символов Microsoft (и всех удаленных) в качестве источника данных.

Настроить в Инструменты, Параметры, Отладка, Символы.

Символы означают, что вы получаете полезную информацию трассировки стека в сторонние и системные сборки. Вы определенно нуждаетесь в них для своего собственного кода, но я думаю, что они загружаются независимо. Лучше всего отключить любые нелокальные источники символов в этом меню, и, если вы загружаете много символов для системных сборок, в которые вам не нужно отлаживать, вы можете временно отключить их загрузку, чтобы ускорить запуск отладки - но они часто полезны для загрузки.

Моя настройка:

В настоящее время я использую Visual Studio 2012 Express , но у меня была такая же проблема и в Visual Studio 2010 Express. Мое решение хранится на сетевом диске; в частности, это мои документы, перенаправленные на сетевой диск, если это имеет значение. (Это не должно быть. В некоторых случаях мой сайт загружается очень быстро при такой настройке.)

Обычно я загружаю в Internet Explorer 9, но та же проблема возникает в Firefox.

Симптомы:

Система будет загружать мои символы сотни раз. По существу, следующее, но есть как минимум 300 таких строк, каждая из которых имеет несколько отличающиеся файлы DLL для одного и того же CSHTML:

В приведенном выше у меня есть три DisplayTemplates: «Контакт», «Расположение» и «StatusCode». Похоже, что IIS загружает символы дважды каждый раз, когда вызывается шаблон отображения. Таким образом, если я отображаю таблицу из 100 записей, которая вызывает все три из этих шаблонов отображения, то загружается 600 отдельных символов.

Это тоже не быстрая операция. Просматривая файлы журнала, которые генерирует IIS, для загрузки каждого символа требуется около 200 мс. Таким образом, супер-длинные задержки.

Что я пробовал:

  • Отладка или выпуск версии, это не имеет значения.
  • Помещение моего проекта на полную реализацию IIS на веб-сервере запускает его очень быстро, без проблем.
  • Cassini, IIS Express 7.5 и IIS Express 8.0 имеют проблемы.
  • Удалить все точки останова ничего не делает.
  • Чистый раствор или удаление .suo тоже ничего не делают.
  • Если я восстановлю IIS Express, или удалю My Docs\IISExpress папку, или восстановлю / переустановлю Visual Studio → проблема МОЖЕТ исчезнуть, но только на некоторое время, прежде чем она вернется обратно.

Любой совет вообще приветствуется.

Следует отметить, что эта машина имеет Symantec Endpoint Protection, которая в прошлом вызывала хаос. Но прямое отключение (хорошо быть администратором) не решило проблему.

У меня есть теория на данный момент. Я думаю, что это все, потому что я работаю с перенаправленной папкой с сетевого ресурса. Пока отладчик просматривал сотни строк «загруженных символов», я остановился, чтобы посмотреть, что он делает. Это было в моем коде, загружая DisplayTemplate, который у меня был. Шагнув в шаблон, выведите это:

Похоже, Visual Studio перекомпилирует мою displaytemplate каждый раз, когда он вызывается, что снова сотни раз. Моя теория заключается в том, что Visual Studio компилирует файл, сохраняет его на общем сетевом ресурсе, затем сетевой ресурс каким-то образом устанавливает новое время, и Visual Studio думает, что файл изменился, и, таким образом, Visual Studio перекомпилирует его снова. Только теория, хотя; Я действительно понятия не имею.

Например, у меня есть автономные файлы (это настольный компьютер в офисе; мне было все равно). Завтра я собираюсь отключить, перезагрузить компьютер и повторить попытку.

Плюс, перемещение моего проекта, как есть, в локальный C: исправляет это. Он загружается очень быстро. Но это не идеально в рабочей среде. Я теряю предыдущие версии, мой код не копируется вообще, если я не копирую его вручную, и он больше никому не передается.

Я могу обойтись копированием его назад и вперед из C на общий сетевой ресурс, если это произойдет. Гораздо неприятнее ждать две минуты для каждой загрузки страницы.

Читайте также: