Почему NServiceBus.Host.exe не выполняет мой код на месте?
Я создаю службу NServiceBus, и когда я запускаю ее (либо в режиме отладки через Visual Studio, либо из командной строки), NServiceBus.Host.exe, кажется, перемещает библиотеки DLL, которые он выполняет, в мою папку AppData.
Приложение зависит от ресурсов, которые существуют в папке bin \ debug (например, папка плагинов, содержащая библиотеки DLL), но эти ресурсы не копируются во временную папку.
Моя среда - Windows 7 x64, и я попытался запустить и Visual Studio, и мою командную строку от имени администратора без каких-либо изменений в поведении.
РЕДАКТИРОВАТЬ
Поведение, кажется, происходит в Topshelf. Когда я отлаживаю через точку останова в конце конструктора моей конечной точки, она сначала останавливается, когда конечная точка создается в методе Main из Program.cs; среда на данный момент:
? GetType (). Assembly.CodeBase "Файл:///C:/Projects/ProcessorService/ProcessorService/bin/Debug/ProcessorService.DLL"? GetType().Assembly.Location "C:\\Projects\\ProcessorService\\ProcessorService\\ бен \\Debug\\ProcessorService.dll"
Однако, когда конструктор вызывается снова, на этот раз из конструктора GenericHost, это среда:
? GetType (). Assembly.CodeBase "Файл:///C:/Projects/ProcessorService/ProcessorService/bin/Debug/ProcessorService.DLL"? GetType().Assembly.Location "C:\\Users\\MyUser\\AppData\\Local\\ сборочный \\ DL3\\D5KV9218.DO9\\YOKC5KD8.C92\\4474672e\\06519009_7623cb01\\ProcessorService.DLL"
Я не вытащил код TopShelf для отладки, чтобы точно увидеть, где происходит перемещение DLL. Но это определенно происходит в NServiceBus.Host.Exe.
3 ответа
Я предполагаю, что вы работаете со своими сервисами в том, что Topshelf называет "изолированным" режимом, где мы скрываем копируем все ваши сборки.
Не могли бы вы опубликовать свою конфигурацию topshelf/nsb.host.
-d
Теневое копирование - это когда.net копирует DLL-файлы перед их загрузкой, чтобы вы могли обновить код без конфликтов блокировки. Это похоже на твоего преступника.
NServiceBus ничего не перемещает, он полностью запускается в папке bin/debug (в Visual Studio) или в установленном каталоге при непосредственном запуске.