모바일 장치 용 Windows CE 용 응용 프로그램을 만들었습니다. VS에서 응용 프로그램을 디버깅 할 때 응용 프로그램이로드되어 정상적으로 실행됩니다. 그러나 설치를 위해 CAB 파일을 빌드 할 때 그렇지 않습니다. 설치 후 응용 프로그램을 처음 실행하면 "TypeLoadException"이 발생합니다. 그러나 다시 시도하면 정상적으로 작동합니다.왜 내 응용 프로그램은 처음 실행될 때 DLL을로드하지 않지만 이후에는 정상적으로로드합니까?
응용 프로그램에서 DLL에 처음 액세스하려고하면 오류가 발생합니다.
내가 필요한만큼 코드를 게시하고 싶지만, 관련성이 어느 정도 확실하지 않습니다. 다음은 CABWIZ.exe로 CAB 파일을 만들 때 사용했던 INF 파일입니다.
[Version]
Signature="$Windows NT$"
Provider="Y"
CESignature="$Windows CE$"
[CEStrings]
AppName="ShoePDA"
InstallDir="\Backup\XClient"
[Strings]
Manufacturer="Y"
[CEDevice]
VersionMin=4.0
VersionMax=6.99
BuildMax=0xE0000000
[DefaultInstall]
CEShortcuts=Shortcuts
AddReg=RegKeys
CopyFiles=Files.Common1,Files.Common2,Files.Common3,Files.Common4,Files.Common5,Files.Common6,Files.Common7
[SourceDisksNames]
1=,"Common1",,"C:\Users\akj\Documents\Udvikling\SVN\X\Trunk\Lib\"
2=,"Common2",,"C:\Users\akj\Documents\Udvikling\SVN\X\Trunk\Lib\"
3=,"Common3",,"C:\Users\akj\Documents\Udvikling\SVN\X\Trunk\Lib\"
4=,"Common4",,"C:\Users\akj\Documents\Udvikling\SVN\X\Trunk\Lib\"
5=,"Common5",,"C:\Users\akj\Documents\Udvikling\SVN\X\Trunk\Lib\"
6=,"Common6",,"C:\Users\akj\Documents\Udvikling\SVN\X\Trunk\Lib\"
7=,"Common7",,"C:\Users\akj\Documents\Udvikling\SVN\X\Trunk\ShoePDA2\obj\Release\"
[SourceDisksFiles]
"OpenNETCF.Net.dll"=1
"OpenNETCF.Windows.Forms.dll"=2
"OpenNETCF.WindowsCE.dll"=3
"OpenNETCF.dll"=4
"datalogic.device2008.dll"=5
"datalogic.wireless2008.dll"=6
"X.exe"=7
[DestinationDirs]
Shortcuts=0,%CE2%\Start Menu
Files.Common1=0,"Backup\XClient"
Files.Common2=0,"Backup\XClient"
Files.Common3=0,"Backup\XClient"
Files.Common4=0,"Backup\XClient"
Files.Common5=0,"Backup\XClient"
Files.Common6=0,"Backup\XClient"
Files.Common7=0,"Backup\XClient"
[Files.Common1]
"OpenNETCF.Net.dll","OpenNETCF.Net.dll",,0
[Files.Common2]
"OpenNETCF.Windows.Forms.dll","OpenNETCF.Windows.Forms.dll",,0
[Files.Common3]
"OpenNETCF.WindowsCE.dll","OpenNETCF.WindowsCE.dll",,0
[Files.Common4]
"OpenNETCF.dll","OpenNETCF.dll",,0
[Files.Common5]
"datalogic.device2008.dll","datalogic.device2008.dll",,0
[Files.Common6]
"datalogic.wireless2008.dll","datalogic.wireless2008.dll",,0
[Files.Common7]
"X.exe","X.exe",,0
[Shortcuts]
[RegKeys]
감사합니다. 도움을 받으러 대단히 감사합니다!
내 첫 번째 질문은 .. 파일 경로가 정확히 대상 장치에있는 것과 같은 방식으로 존재합니까? 귀하의 지역에서 작동하는 것은 반드시 대상 경로에서 작동하지 않을 것입니다 특히 파일 경로가 존재하지 않는 경우 .. 이것은 내 생각에 다른 일이 될 수 있습니다. '공용 언어 런타임에서 찾을 수 없을 때 TypeLoadException이 발생합니다. 조립품, 어셈블리 내의 유형 또는 타입을로드 할 수 없습니다. ' – MethodMan
DLL은 VS가 수행하는 것과 같은 방식으로 배치됩니다. 파일 경로는 VS 및 CAB 파일로 설치 한 후에 동일하게 나타납니다. 그리고 이상한 부분은 온라인으로 시작할 때 trykt를 실행하는 것입니다. 처음으로 다시 한 번 해보면 작동합니다. – FirstHorizon
이상한입니다. . 어떤 다른 로깅을 추가하려고 시도하고 제거 프로세스를 역으로 수행합니다.이 방법이 범위를 좁히는 데 도움이 될 것이라고 생각합니다. 코딩 관점에서 작업하는 것이지만 아마도 문제의 범위를 좁히는 데 도움이 될 것입니다. – MethodMan