Я пишу приложение .NET 3.5 (WinForms), которое использует классы из внешней DLL, и я все время получаю System.TypeLoadException
каждый раз, когда приложение пытается запустить.
Вот исключение VS дисплеях:Help on TypeLoadException
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
.
Есть ли что-нибудь, что мне не хватает?
Я получил эту ошибку, когда у меня было неправильное имя dll в манифесте приложения. – ZX9