2014-09-18 19 views
0

我爲移動設備創建了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] 

非常感謝您的幫助!

+0

所以我的第一個問題是......文件路徑的存在方式與您在目標設備上的文件路徑完全相同嗎?在你的本地工作什麼都不一定適用於目標路徑,特別是如果文件路徑不存在的話。這是我最好的猜測,這也是其他可能發生的事 '當公共語言運行庫找不到時,拋出TypeLoadException程序集中的類型,或者不能加載類型。' – MethodMan 2014-09-18 16:13:40

+0

這些DLL放在那裏的方式與VS正在做的一樣。文件路徑看起來與VS相同,並且在安裝CAB文件之後。奇怪的是,我第一次嘗試啓動它時,它是在線的。如果我在第一次使用後再次使用它。 – FirstHorizon 2014-09-19 07:20:25

+0

這很奇怪。 。有一些不同的事情只是嘗試添加一些日誌記錄,並做相反的排除過程我認爲這將幫助你縮小它的範圍。它可能是從編碼的角度來看,但可能會幫助你縮小問題的範圍。 – MethodMan 2014-09-19 13:23:44

回答

0

這是一個非常奇怪的錯誤。我通過更新我使用設備的API DLL來解決它。當調試時沒有發生錯誤時,它非常可靠。哦,猜猜它已經解決了。

相關問題