第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

XmlSerializer在構造函數(shù)中給出FileNotFoundException

XmlSerializer在構造函數(shù)中給出FileNotFoundException

C#
胡子哥哥 2019-09-19 09:33:03
當我嘗試序列化類型時,我一直在使用的應用程序失敗。像這樣的陳述XmlSerializer lizer = new XmlSerializer(typeof(MyType));生產(chǎn):System.IO.FileNotFoundException occurred  Message="Could not load file or assembly '[Containing Assembly of MyType].XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null' or one of its dependencies. The system cannot find the file specified."   Source="mscorlib"   FileName="[Containing Assembly of MyType].XmlSerializers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"   FusionLog=""   StackTrace:        at System.Reflection.Assembly._nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)        at System.Reflection.Assembly.nLoad(AssemblyName fileName, String codeBase, Evidence assemblySecurity, Assembly locationHint, StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean forIntrospection)我沒有為我的班級定義任何特殊的序列化器。我該如何解決這個問題?
查看完整描述

3 回答

?
慕工程0101907

TA貢獻1887條經(jīng)驗 獲得超5個贊

就像Martin Sherburn所說,這是正常的行為。XmlSerializer的構造函數(shù)首先嘗試查找名為[YourAssembly] .XmlSerializers.dll的程序集,該程序集應包含用于序列化類型的生成類。由于尚未生成此類DLL(默認情況下不是這樣),因此拋出FileNotFoundException。當發(fā)生這種情況時,XmlSerializer的構造函數(shù)捕獲該異常,并且XmlSerializer的構造函數(shù)在運行時自動生成DLL(這是通過在計算機的%temp%目錄中生成C#源文件,然后使用C#編譯器編譯它們來完成的)。對于相同類型的XmlSerializer的其他構造將僅使用已經(jīng)生成的DLL。

更新:從.NET 4.5開始,XmlSerializer不再執(zhí)行代碼生成,也不使用C#編譯器執(zhí)行編譯,以便在運行時創(chuàng)建序列化程序程序集,除非通過設置配置文件設置(useLegacySerializerGeneration)顯式強制執(zhí)行。此更改消除了依賴性csc.exe并提高了啟動性能。來源:.NET Framework 4.5自述文件,第1.3.8.1節(jié)。

該異常由XmlSerializer的構造函數(shù)處理。您無需自己做任何事情,只需單擊“繼續(xù)”(F5)繼續(xù)執(zhí)行您的程序,一切都會好的。如果您對停止執(zhí)行程序并彈出異常幫助程序的異常感到困擾,則可以關閉“Just My Code”,或者將FileNotFoundException設置為在拋出時執(zhí)行,而不是在“User-未處理”。

要啟用“Just My Code”,請轉到工具>>選項>>調試>>常規(guī)>>啟用我的代碼。要在拋出FileNotFound時關閉執(zhí)行中斷,請轉到Debug >> Exceptions >> Find >> enter'FileNotFoundException'>>取消選中System.IO.FileNotFoundException中的'Thrown'復選框。


查看完整回答
反對 回復 2019-09-19
?
一只名叫tom的貓

TA貢獻1906條經(jīng)驗 獲得超3個贊

有一個解決方法。如果你使用

XmlSerializer lizer = XmlSerializer.FromTypes(new[] { typeof(MyType) })[0];

它應該避免這種例外。這對我有用。

警告: 不要多次使用,否則會有內(nèi)存泄漏

如果你使用這種方法XmlSerializer多次創(chuàng)建同一類型的實例,你會像瘋了一樣泄漏內(nèi)存!

這是因為此方法繞過了提供者XmlSerializer(type)XmlSerializer(type, defaultNameSpace)構造函數(shù)(所有其他構造函數(shù)也繞過緩存)的內(nèi)置緩存。

如果您使用任何方法來創(chuàng)建不通過這兩個構造函數(shù)的XmlSerializer,您必須實現(xiàn)自己的緩存,否則您將出血。


查看完整回答
反對 回復 2019-09-19
  • 3 回答
  • 0 關注
  • 790 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號