Самый Pythonic путь - это модуль logging . Это было упомянуто в комментариях, но, к сожалению, без особого упорства. Существует много причин, которые предпочтительнее предупреждений :
Основной пример использования для модуля протоколирования будет выглядеть следующим образом:
import logging
logger = logging.getLogger(__name__) # module-level logger
# (tons of code)
logger.warning('illegal move: %s in file %s', move, file_name)
# (more tons of code)
Это приведет к печати таких сообщений, как:
WARNING:chess_parser:illegal move: a2-b7 in file parties.pgn
(при условии, что ваш модуль называется chess_parser.py)
Самое главное, что вам не нужно ничего делать в вашем модуле парсера. Вы заявляете, что используете систему ведения журнала, вы используете логгер с определенным именем (то же самое, что и имя модуля анализатора в этом примере), и вы отправляете ему сообщения об уровне предупреждений. Ваш модуль не должен знать, как эти сообщения обрабатываются, отформатируются и сообщаются пользователю. Или, если они вообще сообщаются. Например, вы можете настроить модуль регистрации (обычно в самом начале вашей программы), чтобы использовать другой формат и выгрузить его в файл:
logging.basicConfig(filename = 'parser.log', format = '%(name)s [%(levelname)s] %(message)s')
И вдруг без каких-либо изменений кода вашего модуля, ваши предупреждающие сообщения сохраняются в файл с другим форматом, а не на печать:
chess_parser [WARNING] illegal move: a2-b7 in file parties.pgn
Или вы можете подавить предупреждения, если хотите:
logging.basicConfig(level = logging.ERROR)
И ваш предупреждения модуля будут полностью игнорироваться, в то время как любые сообщения ERROR или более высокого уровня из вашего модуля будут обрабатываться.
Просто удалите .suo файл. Это содержит список открытых файлов.
Немного исследования поднимает то, что можно сделать это с макросом:
EnvironmentEvents
в Макро-Проводнике. (Для получения дополнительной информации см. здесь .) EnvironmentEvents
модуль. Вставленный в этот код:
Public Sub CloseDocsOnExit() Handles SolutionEvents.BeforeClosing
DTE.ExecuteCommand("Window.CloseAllDocuments")
End Sub
Я никогда не понимал, насколько это раздражало меня также! Я не смог найти установку, но в Options > Environment > Keyboard
можно связать ярлык на Window.CloseAllDocuments
. ALT+X
был развязан для меня так, я просто использовал это. Мне интересно, если существует некоторая скрытая установка, чтобы автоматически сделать это на выходе решения хотя (или загрузка).
Редактирование: Полностью читайте, вопрос неправильно сначала - игнорируют мое первое (теперь уведенный) ответ. :)
я изменил клавиатуру, отображающуюся для CTRL-SHIFT-C от перевода в рабочее состояние Представления класса к закрытию всех окон документа - что-то, что я использую несколько порядков величины чаще - и затем я просто очищаю свою рабочую область прежде, чем закрыть решение.
Я надеялся на что-то немного более автоматическое. VS создаст новый .suo файл каждый раз, когда проект сохраняется. Таким образом, я должен был бы удалить тот файл каждый раз, когда я открываю проект. Я также не хочу должным быть не забывать закрывать все файлы перед заключительным VS.
Другие IDE, которые я использовал, имеют схожую функциональность, но также и делают довольно простым стать включения - выключения.
спасибо за Вашу справку.
Или можно закрыть весь открытый документ из Меню окна перед заключительным VS.
Попробуйте следующее:
Если у вас есть репозиторий, вы можете проверить его файл в.
Я предлагаю это, потому что у меня была обратная проблема, когда мои старые файлы не открывались автоматически, а причиной был файл .suo, который был зарегистрирован в репозитории и был (по какой-то причине) не перезаписывается Studio. Файл даже не был защищен от записи.
Для меня работает единственный способ: изменить местоположение проекта и снова открыть там форму решений. :)