Я создал сервис окон, предназначенный для.NET 2.0 в VS 2008. Я выполняю его как консольное приложение для отладки его.
Консольное приложение работает отлично. Я поместил его на свой локальный компьютер как услуга, скомпилированный в режиме отладки, все еще работая отлично. Я готов выпустить теперь, и внезапно, когда я установил его для выпуска режима, сервисных компиляций и установок, но ничего не происходит. (Никакой код в обслуживании не работает вообще).
Я понимаю, что выпуск по сравнению с режимом отладки является параметрами конфигурации свойства, но кажется, что в режиме выпуска, даже когда я проверяю, определяют постоянную ОТЛАДКУ, снятие флажка Оптимизируют код и устанавливают Информацию об отладке на 'полный', он ничего все еще не делает.
Задержите его для отладки, и это работает как очарование снова.
(Как заметка на полях, я пытался сбросить целевую платформу к 3,5, чтобы удостовериться, что это не было проблемой, также),
Таким образом, мои вопросы (в порядке важности) являются ими:
Будет использование моей версии "отладки", всегда когда-либо вызывают какие-либо проблемы?
Какие настройки отличаются между отладкой и выпуском помимо трех, которые я пытался уже изменить?
Это походит на странную ошибку мне и вызвало мое любопытство. Какая-либо идея, что вызвало бы это?
Править: Должен упомянуть, я уже использую пользовательский установщик. В основном я компилирую программу (или в отладке или в выпуске) и затем устанавливаю его с соответствующим установщиком.
1) Возможно, если не прямо, то косвенно, замедляя работу приложения и заставляя его использовать больше памяти.
2) Когда он работает в режиме отладки, есть определенные вещи, которые работают по-другому, например:
Код компилируется с некоторыми дополнительными инструкциями NOP, так что есть по крайней мере одна инструкция в начале каждого кода line, чтобы можно было поставить точку останова на любой строке.
Инструкции можно переставлять в режиме выпуска, но не в режиме отладки, так что код может быть одношаговым, а результат будет соответствовать точному порядку исходного кода.
Сборщик мусора работает по-другому, позволяя ссылкам существовать во всей их области видимости, а не только на время их использования, так что переменные можно просматривать в режиме отладки, не уходя до окончания области.
Исключения содержат больше информации и требуют намного больше времени для обработки при возникновении.
Все эти различия относительно невелики, но это настоящие различия, и в некоторых случаях они могут иметь значение.
Если вы видите большую разницу в производительности между режимом отладки и режимом выпуска, обычно это происходит из-за того, что что-то не так с кодом, например, если он генерирует и перехватывает огромное количество исключений.Если в коде есть состояние гонки, это может произойти только в режиме выпуска, потому что в режиме отладки есть дополнительные накладные расходы, которые заставляют код работать немного медленнее.
3) Что касается проблемы с вашей службой, я не знаю, но, похоже, это не связано с тем, как код выполняется в режиме отладки или в режиме выпуска. Код запустится в любом случае, и если это будет проблема с кодом, произойдет сбой, и вы сможете увидеть это в журнале событий.
Я не уверен, что смогу поговорить с №1 или №2, но когда у меня возникали подобные проблемы, это было из-за неправильной потоковой передачи / параллелизма . Я не уверен, насколько велико ваше приложение, но это может быть хорошим началом.