У меня проблема с MEF, когда он зависает при создании DirectoryCatalog. У меня есть приложение Windows Forms, которое я тестирую функциональность MEF, и оно работает без проблем. Однако, когда я запускаю тот же код в службе Windows, он зависает в строке:
_catalog = new DirectoryCatalog(assemblyBaseDirectory);
//Here is the full code block.
var codeBaseDir = Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase);
if (codeBaseDir != null) {
assemblyBaseDirectory = new Uri(codeBaseDir).AbsolutePath;
Logger.Info("Creating Directory Catalog for " + assemblyBaseDirectory);
_catalog = new DirectoryCatalog(assemblyBaseDirectory);
Logger.Info("Directory Catalog created!");
}
Я тоже не получаю исключения. Я включил регистрацию и обнаружил, что вторая строка Logger.Info никогда не вызывается.
UPDATE:
Я определил, что мой путь не был возвращен таким же образом, когда я вызвал этот код из моей службы. Он форматировал путь к каталогу как «C: / Program% 20Files / My% 20Service». Я не уверен, почему это не делало это для моего приложения выигрышных форм.