Я заметил, что для проекта веб-сайта VS2010 C#, я продолжаю работать, кажется, всегда нужен iisreset, чтобы смочь видеть изменения, которые я вношу в код позади файлов в проекте. Я замечаю, что это не имеет правильной версии блока, потому что то, когда я пытаюсь отладить Visual Studio, не позволит мне поместить точки останова в файлы кода, которые я изменил.
Я думал бы, что выполнение перезапуска пула приложений будет достаточно, но наши шаги сборки сообщения делают это, и это, кажется, не достаточно.
Могло бы быть что-то не настроенное неправильно на моей машине или в проекте заставить это произойти?
- Я предполагаю, что вы используете asp.net 4-
В web.config это значения для отладки, которые делают меньше компиляций
<compilation debug="true" batch="false" optimizeCompilations="true"
defaultLanguage="C#" targetFramework="4.0">
Вы можете изменить batch, или optimizeCompilations, чтобы посмотреть, решилась ли ваша проблема.
Теперь я расскажу вам о другой причине, которую я заметил.
Когда у вас есть функция с параметрами по умолчанию, например
foo(int cValueA, int cValueB = 23)
и по какой-то причине вы меняете их на
foo(int cValueA, int cValueB = 23, int cValueC = 34)
или на
foo(int cValueA)
все вызовы этой функции с одним значением не могут поймать обновление вашей функции, поэтому они используют старый код. Один из способов решения этой проблемы, и то, что я делаю, это поиск всех ссылок на эту функцию и просто открыть файл, добавить пробел в конце и сохранить его, таким образом я изменяю время даты в файле, чтобы дать компилятору заметку о необходимости обновления.
IIS оптимизирован для производственной среды, в которой развернутые файлы не меняются во время выполнения. В этом случае IIS должен регулярно опрашивать и перезагружать библиотеки DLL во время выполнения. Что является редким случаем в производственной рекламе, также существенно ухудшает производительность. Обычно во время разработки используйте тестовый веб-сервер, поставляемый с VS2010. Это оптимизировано для разработки. Используйте правильный инструмент для правильной цели.