我正在构建一个 NServiceBus 服务,当我启动它时(通过 Visual Studio 调试或从命令行),NServiceBus.Host.exe 似乎正在将它运行的 DLL 重新定位到我的 AppData 文件夹。
应用程序依赖于 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 中。