Я столкнулся с точно такой же ошибкой.
Рабочий каталог служб отличается от каталога приложения (обычно C: \ Windows \ System32).
Например, метод AssemblyName.GetAssemblyName
выдает FileNotFoundException
, если вы пытаетесь найти сборку, развернутую в каталоге приложения.
В этом случае решение состоит в том, чтобы определить Environment.CurrentDirectory
с каталогом приложения перед загрузкой сборки.
Пример кода:
const string SCHEMA_FILE = @"file:\";
var appAssembly = Assembly.GetExecutingAssembly();
var path = Path.GetDirectoryName(appAssembly.CodeBase);
if (path.StartsWith(SCHEMA_FILE))
path = path.Remove(0, SCHEMA_FILE.Length);
Environment.CurrentDirectory = path;