我正在構建一個NServiceBus服務,當我啓動它(無論是通過Visual Studio進行調試還是從命令行)NServiceBus.Host.exe似乎都將它運行的DLL重定位到我的AppData文件夾。爲什麼NServiceBus.Host.exe不能運行我的代碼?
應用取決於存在在bin \ debug文件夾資源(包含的DLL例如插件文件夾中),但這些資源不被複制到臨時文件夾。
我的環境是Windows 7 x64,我嘗試以管理員身份運行Visual Studio和我的命令提示符,但行爲沒有變化。
編輯
行爲似乎內Topshelf發生。當我在端點的構造函數的末尾使用斷點進行調試時,它首先在Program.cs的Main方法中構造端點時停止;在這一點上的環境是:
? GetType().Assembly.CodeBase "file:///C:/Projects/ProcessorService/ProcessorService/bin/Debug/ProcessorService.DLL" ? GetType().Assembly.Location "C:\\Projects\\ProcessorService\\ProcessorService\\bin\\Debug\\ProcessorService.dll"
然而,當構造函數被再次調用,此時距離GenericHost構造,這是環境:
? GetType().Assembly.CodeBase "file:///C:/Projects/ProcessorService/ProcessorService/bin/Debug/ProcessorService.DLL" ? GetType().Assembly.Location "C:\\Users\\MyUser\\AppData\\Local\\assembly\\dl3\\D5KV9218.DO9\\YOKC5KD8.C92\\4474672e\\06519009_7623cb01\\ProcessorService.DLL"
我沒有拉下TopShelf代碼進行調試,以查看dll移動的確切位置。但是這肯定發生在NServiceBus.Host.Exe中。
我沒有該項目的特定NServiceBus.Host.Exe.Config文件。但是,NServiceBus.Host.Exe中的Main()方法在傳遞給RunnerConfigurator.New()中的Action的IRunnerConfigurator上調用ConfigureServiceInIsolation(),我認爲這會導致此行爲? –
arootbeer
2010-07-15 13:52:25
我會嘗試不隔離運行,看看是否可以解決您的問題。如果你仍然想孤立運行,你可以嘗試基於你的文件路徑'AppDomain.CurrentDomain.BaseDirectory' – drusellers 2010-07-15 16:08:37
有問題的代碼是NServiceBus.Host.exe的一部分;我無法控制它。至少我知道現在在做什麼,爲什麼。我一直在計劃添加基於配置的插件位置 - 這只是加速了項目的一部分:) – arootbeer 2010-07-21 18:35:24