У меня есть приложение, которое является давно работающей службой, я недавно переписал его, чтобы использовать плагины и домены приложений для решения проблемы с памятью, которая оказалась не моей, а утечкой в пространстве имен Microsoft DirectoryServices, не позволяющем должным образом удалять вещи. После моей перезаписи я больше не могу запускать приложение как службу, хотя в консольном режиме оно работает нормально. При попытке запустить приложение я получаю следующее исключение в журнале событий Windows:
Application: ADImport.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.BadImageFormatException
Stack:
at System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName assemblyRef, Evidence assemblySecurity, StackCrawlMark& stackMark, Boolean forIntrospection, Boolean suppressSecurityChecks)
at System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile, Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks, StackCrawlMark& stackMark)
at System.Reflection.Assembly.LoadFrom(String assemblyFile)
at ADImportPlugIn.LoadAssemblyAttributesProxy.LoadAssemblyAttributes(String assFile)
at ADImportPlugIn.LoadAssemblyAttributesProxy.LoadAssemblyAttributes(System.String)
at ADImportPlugIn.PlugInLoader.GetAssemblyNames()
at ADImportPlugIn.PlugInLoader.LoadAllPlugIns()
at ADImport.Program.WorkerMethod()
at System.Threading.ThreadHelper.ThreadStart_Context(System.Object)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean)
at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object)
at System.Threading.ThreadHelper.ThreadStart()
Я искал здесь и видел много потоков о разрядности приложения и возможных несоответствиях между приложением и связанными DLL/сборками. Я все проверил, пытался настроить таргетинг на определенные платформы и т. д., но ничего не работает. Моя платформа разработки — 64-битная Windows 7, цель — 64-битная Windows 2008. Мое приложение настроено на x86, мои сборки - anycpu, хотя я пытался установить их также x86, x64 и т. д. Я использую log4net в одной из моих DLL, но не думаю, что это проблема.
Любая помощь будет оценена по достоинству!