Я пишу приложение .NET 3.5 (WinForms), которое использует классы из внешней DLL, и я продолжаю получать System.TypeLoadException
каждый раз, когда приложение пытается запустить.
Вот исключение, которое отображает VS:
System.TypeLoadException was unhandled
Message=Could not load type 'PolyMorph.Common.Settings' from assembly 'PolyMorph, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'.
Source=PolyMorph
TypeName=PolyMorph.Common.Settings
StackTrace:
at PolyMorphApp.App.Initialize()
at PolyMorphApp.App.Main()
at System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
at System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)
at Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
Вот код, который я запускаю:
Friend NotInheritable Class App
<STAThread()> Shared Sub Main()
'set the exception handlers'
Application.SetUnhandledExceptionMode(UnhandledExceptionMode.CatchException)
AddHandler AppDomain.CurrentDomain.UnhandledException, AddressOf UnhandledExceptionHandler
AddHandler Application.ThreadException, AddressOf ThreadExceptionHandler
'initialize the application'
App.Initialize()
'and then run the application'
Dim mainForm As New PolymorphHost
Application.Run(mainForm)
End Sub
Shared Function Initialize() As FunctionResult
If App.InitializeDataDirectory() = False Then
Return New FunctionResult(False, "the application's data directory")
End If
_settings = New PolyMorph.Common.Settings(AppDataDirectory & "\Settings.dat")
......code continues to load settings from the _settings variable
End Function
End Class
Что меня удивляет, так это то, что отладчик VS2010 останавливается на линии App.Initialize()
, даже не заходя в функцию Initialize
.
Если, однако, я закомментирую все ссылки на внешние библиотеки DLL в функции Initialize
приложение правильно инициализируется.
После прочтения я понял, что некоторые люди, сообщающие об этой ошибке, используют разные сборки в своих проектах (как в x64 DLL, на которую ссылается приложение x86).Поэтому я изменил конфигурацию сборки, чтобы DLL и приложение были x86, но у меня все еще есть TypeLoadException
.
Есть ли что-то, что я пропускаю?