精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

簡述 C# 中應用程序集的裝載過程

開發 后端
我們一直在處理庫和NuGet軟件包。不管是好是壞,高級.NET開發人員都需要了解.NET運行時如何加載程序集。

本文轉載自微信公眾號「DotNET技術圈」,作者michaelscode。轉載本文請聯系DotNET技術圈公眾號。

了解程序集如何在C#.NET中加載

我們一直在處理庫和NuGet軟件包。不管是好是壞,高級.NET開發人員都需要了解.NET運行時如何加載程序集。

這些庫依賴于其他流行的庫,并且有很多共享的依賴項。有了足夠大的依賴關系網絡,您最終將陷入沖突或困境。處理此類問題的最佳方法是了解該機制在內部的工作方式。

在本文中,您將看到.NET進程如何以及何時加載引用的程序集。

您將了解加載了哪個庫版本,當有多個可用版本時會發生什么,以及為什么有時由于版本沖突而出現問題。

您將看到如何調試這些類型的問題,查看程序集綁定日志(融合日志)以及一些解決沖突的方法。

程序集,模塊和引用

讓我們從圍繞.NET流程的一些基本術語開始。

一個裝配在.NET是一個DLL或EXE文件。Visual Studio解決方案中的每個項目都被編譯為一個程序集。

每個程序集可以包含多個模塊,但是實際上,我們幾乎總是在一個程序集中有一個模塊,該模塊的名稱與該程序集相同。

在Visual Studio中啟動進程或單擊F5時,將執行啟動項目程序集。除了.NET Framework或.NET Core程序集之外,它將是第一個加載的程序集。

之后,該過程將根據需要在運行時加載其他程序集。僅當需要調用該程序集的方法或使用該程序集的類型時,它才會延遲加載程序集。

這里是為一個簡單的“ Hello World” .NET Framework項目加載的模塊(出于我們所有的意圖和目的,模塊和程序集都是相同的)。MyStartup.dll是此處的啟動項目:

.NET Core項目啟動時加載的模塊

當您從另一個項目引用一個項目時,在構建時,被引用項目的DLL或EXE被復制到啟動項目的Bin文件夾中。

通常是Bin \ Debug或Bin \ Release。在運行時,當您第一次使用引用的項目中的類型時,CLR在應用程序目錄中查找具有與期望的名稱和版本相同的DLL文件。然后將程序集加載到流程中。這也稱為綁定到裝配件。

這是一個例子:

假設我們有一個名為MyStartup的簡單控制臺應用程序,它引用了另一個名為Lib1的項目。MyStartup使用Lib1程序集中的某些類。

在MyStartup中:

  1. class Program 
  2.     static void Main(string[] args) 
  3.     { 
  4.         int a = int.Parse(Console.ReadLine()); 
  5.         int b = int.Parse(Console.ReadLine()); 
  6.         Console.WriteLine("A + B = " + Add(a, b)); 
  7.     } 
  8.  
  9.     private static int Add(int a, int b) 
  10.     { 
  11.         var calculator = new Lib1.Calculator(); 
  12.         return calculator.Sum(a, b); 
  13.     } 

在Lib1中:

  1. public class Calculator 
  2.     public int Sum(int a, int b) 
  3.     { 
  4.         return a + b; 
  5.     } 

輸入Main方法時,尚未加載Lib1程序集。但是,在輸入Add方法時,CLR嘗試解析Calculator類型,找出它在引用的程序集Lib1中,然后嘗試加載該程序集。

.NET中的程序集綁定

當CLR需要加載程序集時,邏輯實際上比在Bin文件夾中查找要復雜一些。這是執行的實際邏輯(有關詳細說明,請參見Microsoft文檔[1]):

1.根據配置文件(app.config或web.config)確定需要加載的程序集的版本。該配置文件的名稱為(在生成之后) [executable name].exe.config或web.config。綁定重定向在這里發揮了作用(稍后會詳細介紹)。

2.查看程序集是否已加載。如果加載了其他版本,則將拋出FileLoadException,除非它是一個可以同時加載多個版本的強命名程序集。

3.如果它是強名稱程序集,請檢查全局程序集緩存[2](GAC)。GAC是機器上共享多個應用程序部件的地方。如果需要的話,程序集會緩存。它只能存儲強命名程序集。它可以存儲同一程序集的不同版本。您可以使用gacutil.exe[3]自己將其安裝到GAC 。

4.如果它是一個強名稱的程序集,并且配置文件包含節點,那么它將檢查那里的程序集位置。如果該節點存在并且找不到程序集,FileNotFoundException則將引發a。

5.根據啟發式算法檢查程序集DLL或EXE。此過程稱為“探測”。算法如下:

  • 檢查文件夾[application base] / [assembly name].dll。應用程序庫是應用程序可執行文件所在的位置。通常,您的Bin \ Debug或Bin \ Release文件夾。
  • 檢查一下 [application base] / [assembly name] / [assembly name].dll
  • 如果為引用的程序集指定了區域性信息,則僅檢查以下目錄: [application base] / [culture] / [assembly name].dll [application base] / [culture] / [assembly name] / [assembly name].dll
  • 如果該 節點存在于配置文件中,則它將在該privatePath節點的屬性指定的文件夾中查找程序集。

他們為什么要使所有事情變得如此困難,對嗎?

實際上,這種邏輯非常有助于我們發展,而不會使事情變得困難。它的存在是為了實現一些重要目標:

  • 為了確保您引用的是特定的程序集和版本,則將加載該確切版本。否則,將引發異常。而且,如果您知道自己在做什么,則可以在配置文件中指定覆蓋規則(綁定重定向)。
  • 為了靈活地在您要加載的程序集中進行。例如,如果要根據不同的區域性(語言)加載不同的程序集,則可以輕松地做到這一點。或者,如果您要根據客戶配置加載不同的程序集,那也可以。
  • 為了安全起見,我們使用了全稱的程序集。他們確保您不能“偽造”程序集。例如,如果某個進程希望加載Lib1 v4.5,那么您將無法加載具有相同名稱和版本的惡意軟件程序集。加載時會引發異常。這就是為什么在計算機上所有進程都共享的GAC只接受強名稱程序集的原因。

在大多數應用程序中,您無需記住程序集加載和探測的復雜邏輯。您無需了解或考慮GAC,全名程序集或操作配置文件。

您幾乎根本不需要考慮庫的版本,因為可能的沖突通過稱為“綁定重定向”的機制自動解決了。

綁定重定向

如果有一件事對于了解這筆交易非常重要,那就是綁定重定向。能夠告訴運行時它將實際加載哪個版本,而不管其引用的版本如何。

這是一個示例:您的流程有兩個項目(模塊):項目A和項目B。項目A引用log4net.dll v1.1,項目B引用log4net.dll v1.2。兩個log4net DLL文件都復制到輸出文件夾,但是只能有一個log4net.dll文件。

假設復制到輸出文件夾的文件是log4net.dll v1.2。假設到達的第一個代碼是Project A中的代碼,該代碼引用了log4net v1.1。運行時將在輸出文件夾中查找,找到不同版本的log4net,并失敗FileLoadException。

還有另一種可能。假設首先執行了項目B中的代碼,并且在嘗試使用log4net時,它成功加載了log4net.dll v1.2。片刻之后,Project A中的代碼將嘗試使用log4net v1.1,請參見該程序集已經加載了其他版本,并拋出FileLoadException。

如果您知道哪個log4net版本將在輸出文件夾中,在這種情況下可以做的就是告訴運行時應該使用哪個版本。只需app.config在該runtime部分的文件中添加以下幾行:

  1. <?xml version="1.0" encoding="utf-8" ?> 
  2. <configuration> 
  3.   ... 
  4.   <runtime> 
  5.     ... 
  6.     <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"
  7.       <dependentAssembly> 
  8.         <assemblyIdentity name="log4net"  
  9.                           publicKeyToken="669e0ddf0bb1aa2a" culture="neutral" /> 
  10.         <bindingRedirect oldVersion="0.0.0.0-5.0.0.0" newVersion="1.2.0" /> 
  11.       </dependentAssembly> 
  12.     </assemblyBinding> 
  13.   </runtime> 
  14.   ... 
  15. </configuration> 

 這意味著,只要運行時想綁定到版本范圍為0.0.0.0to的程序集log4net 5.0.0.0,它就會嘗試綁定到version 1.2.0。

實際上,您不必手動添加這些重定向,因為它們是自動添加的。如果轉到啟動項目的“屬性”,則會看到以下設置:

圖片-20200711101325128

默認情況下選中此選項。它會自動檢測版本沖突并在.config文件中生成綁定重定向。

當問題開始發生時

乍一看,綁定重定向可能看起來像是對所有問題的答案,但事實并非如此。使用綁定重定向時,基本上使用的庫版本與預期不同。如果刪除方法怎么辦?或方法的簽名已更改?在這種情況下,調用該方法時,程序將因運行時錯誤而失敗。畢竟,創建版本是有原因的。

如果確實存在此類問題,則有解決方法。查看我的文章:如何解決.NET引用和NuGet軟件包版本沖突[4]。

故障排除

當您有一個FileLoadException或類似的東西時,我建議做的第一件事是查看Visual Studio中的“模塊”窗口。在這里,您將看到所有已加載的模塊,并確定您要加載的程序集是否已加載,使用哪個版本以及從哪個路徑加載。

除此之外,您還可以查看程序集綁定日志,也稱為融合日志。這些日志將顯示在程序集綁定嘗試過程中到底發生了什么。您將看到運行時查找的程序集版本,運行時查找的文件夾以及故障點。

有幾種查看融合日志的方法。首先,您必須啟用它們,因為默認情況下它們是禁用的。您可以通過將HKLM\Software\Microsoft\Fusion\ForceLog值設置為1并將HKLM\Software\Microsoft\Fusion\LogPath值設置為來在注冊表中手動啟用它們C:\FusionLogs。日志將自動出現。或者,您可以使用Fusion Log Viewer,該軟件應以方式安裝在PC上fuslogvw.exe。我建議使用“一切窗口”搜索之[5]類的程序來查找它。確保以管理員權限運行融合日志查看器,以便能夠啟用和禁用日志。最近更流行的一種更現代的工具是Fusion ++[6]。

邊注

也許您不需要,但是我以前討厭不得不處理這類問題。例如一個邏輯上的問題,讓我構建一些東西,甚至解決一個生產錯誤,但其他問題都好說,唯獨這個……。

在這件事上別無選擇,我不得不艱難地學習程序集綁定的內部工作。我發現,就像其他所有內容一樣,一旦您理解了某些內容,它就會變得不那么可怕,甚至變得不再那么有趣了。

因此,我希望本文對您有意義,并會在我走過的道路上為您提供快速幫助。

References

[1] Microsoft文檔: https://docs.microsoft.com/en-us/dotnet/framework/deployment/how-the-runtime-locates-assemblies

[2] 全局程序集緩存: https://docs.microsoft.com/en-us/dotnet/framework/app-domains/gac

[3] gacutil.exe: https://docs.microsoft.com/en-us/dotnet/framework/tools/gacutil-exe-gac-tool

[4] 如何解決.NET引用和NuGet軟件包版本沖突: https://michaelscodingspot.com/how-to-resolve-net-reference-and-nuget-package-version-conflicts/

[5] 一切窗口”搜索之: https://www.voidtools.com/

[6] Fusion ++: https://github.com/awaescher/Fusion/

 

責任編輯:武曉燕 來源: DotNET技術圈
相關推薦

2009-08-24 09:25:18

Visual C# ..NET應用程序

2009-08-24 14:19:27

C# Windows應

2009-08-06 10:27:08

C#應用程序域

2009-08-28 16:43:08

AutoCAD托管C#

2009-08-24 13:30:50

C# Windows

2009-01-19 11:07:42

C#Web.NET

2009-08-24 16:02:10

C# Windows應

2009-08-24 13:40:58

C# Windows

2009-08-25 09:39:21

創建C# Window

2009-09-03 17:36:13

C#創建Web應用程序

2009-08-19 15:31:32

C#控制臺應用程序

2009-08-19 17:11:49

C#程序集

2010-02-22 14:54:47

Python應用程序

2010-11-03 15:10:04

SilverlightSilverlightWindows Pho

2009-07-30 18:50:32

C#發送消息C#應用程序

2009-09-09 14:20:18

C# XML解析XML解析方法

2024-04-28 10:58:00

C#編程窗口關閉事件

2009-04-01 14:33:33

2010-03-01 10:30:29

Python應用程序

2011-07-28 15:47:20

IOS 程序 測試
點贊
收藏

51CTO技術棧公眾號

国产一区二区三区久久久| 亚欧洲精品视频在线观看| 亚洲人成在线播放网站岛国| 粉嫩av四季av绯色av第一区| 日本特黄一级片| 精品日本12videosex| 欧美日韩电影一区| 国产白丝袜美女久久久久| a√资源在线| 国产福利一区在线| 国产精品九九九| 久久精品视频6| 欧洲grand老妇人| 欧美成人福利视频| 9久久婷婷国产综合精品性色| 国产精品久久久久久福利| 成人黄色在线看| 成人性生交大片免费观看嘿嘿视频| 国产亚洲色婷婷久久99精品| 成人免费在线观看av| 精品99一区二区三区| 在线看的黄色网址| 欧美13videosex性极品| 亚洲精品videosex极品| 日韩高清av电影| 免费的黄色av| 韩国v欧美v日本v亚洲v| 国产精品成久久久久三级| 中文字幕一区二区三区手机版| 日韩精品久久| 亚洲人成五月天| 白嫩情侣偷拍呻吟刺激 | 91国内产香蕉| 欧美手机在线观看| 欧美一级淫片| 亚洲欧美国产日韩中文字幕| 波多野结衣办公室双飞| 色8久久久久| 欧美中文字幕久久| 无码aⅴ精品一区二区三区浪潮| 四虎影视成人| 亚洲视频综合在线| 一本一本a久久| 国产视频第一区| 97超碰欧美中文字幕| 成人在线资源网址| 国产丝袜在线视频| 狠狠色丁香婷综合久久| 国产精品自产拍高潮在线观看| 亚洲天堂一区在线| 亚洲深爱激情| 68精品久久久久久欧美 | 国产一区欧美| 九九久久精品一区| 欧美成人综合色| 女人香蕉久久**毛片精品| 久久久www成人免费精品张筱雨| 成人小视频免费看| 日韩成人精品一区二区| 日韩中文字幕国产精品| 欧美xxxx精品| 91精品国产麻豆国产在线观看 | 男男gaygays亚洲| 亚洲卡通动漫在线| 奇米777四色影视在线看| 色呦呦视频在线观看| 一区二区三区四区激情| 日本中文字幕在线视频观看| 俺来也官网欧美久久精品| 亚洲va欧美va国产va天堂影院| 欧美黄网在线观看| 96av在线| 一本大道久久精品懂色aⅴ| 97在线免费公开视频| 国产一区二区主播在线| 欧美日韩成人一区二区| 两性午夜免费视频| 国产在线播放精品| 亚洲精品视频久久| 69xxx免费| 亚洲高清资源在线观看| 高清一区二区三区四区五区| 中文字幕亚洲精品一区| 日本美女一区二区三区视频| 91麻豆桃色免费看| 亚洲国产精品久久久久爰性色 | 欧美日韩中文字幕视频| 国产精品久久久久久久| 欧美福利视频网站| 亚洲午夜18毛片在线看| 秋霞午夜av一区二区三区| 成人黄在线观看| wwwav在线播放| 久久久亚洲精品一区二区三区| 亚洲国产综合自拍| 欧美人体视频xxxxx| 日韩欧美亚洲一二三区| 在线能看的av网站| 国产一区二区三区亚洲| 这里只有精品视频| 国产小视频在线观看免费| 噜噜噜91成人网| 3d精品h动漫啪啪一区二区| 香蕉视频网站在线| 亚洲天堂精品在线观看| 天天夜碰日日摸日日澡性色av| 成人免费一区| 亚洲国产精品一区二区三区| 成人一级片免费看| 一区二区三区国产在线| 国产在线精品一区免费香蕉 | 中文字幕欧美视频在线| 久青草视频在线观看| 蜜桃久久久久久| 久久国产精品一区二区三区四区| 精品美女在线观看视频在线观看| 精品久久中文字幕久久av| 天天操狠狠操夜夜操| 妖精一区二区三区精品视频 | 狠狠色伊人亚洲综合成人| 久久99九九| 亚洲男同gay网站| 91成人在线观看喷潮| 熟女人妻一区二区三区免费看| 青青草91久久久久久久久| 韩国视频理论视频久久| 国产情侣激情自拍| 国产精品国产三级国产普通话三级 | 99精品视频在线观看免费播放| 91精品国产91久久久| 精品国产999久久久免费| 日本一区二区三区久久久久久久久不| 成年人网站免费视频| 欧美视频二区欧美影视| 色婷婷综合久久久久| 成人h动漫精品一区二区下载| 成人免费精品视频| 国产91在线亚洲| 久久久国产精品入口麻豆| 日韩在线视频二区| 影音先锋国产在线| 国产亚洲一区二区三区四区| 久草资源站在线观看| jazzjazz国产精品久久| 欧美巨大黑人极品精男| 国产suv精品一区二区69| √…a在线天堂一区| 天天干天天操天天做| 日本女优一区| 国产精品入口夜色视频大尺度 | 日韩精品一区在线视频| www.久久东京| 午夜精品久久久99热福利| 欧美一级特黄aaaaaa| 亚洲影视在线播放| 国模无码视频一区| 亚洲大胆视频| 狼狼综合久久久久综合网| 国产精品一区二区av影院萌芽| 日韩黄色高清视频| 国产又黄又猛又粗又爽| 97久久久精品综合88久久| 国产白丝袜美女久久久久| 亚洲电影男人天堂| 日本一本a高清免费不卡| 黄视频在线播放| 欧美色图在线观看| 成人免费视频国产免费观看| 国产精品亚洲а∨天堂免在线| 成人国产在线看| 精品亚洲自拍| 日本国产高清不卡| 午夜在线视频播放| 日韩一二在线观看| 欧美黑吊大战白妞| 99久久精品国产精品久久| 日韩欧美在线免费观看视频| 成人久久久久| 99精品欧美一区二区三区| 538在线精品| 一区二区欧美久久| 国产乱码精品一区二三区蜜臂| 亚洲激情欧美激情| 中国美女乱淫免费看视频| 美日韩一区二区三区| 国产午夜精品视频一区二区三区| 麻豆国产欧美一区二区三区r| 国产成人精品国内自产拍免费看| 素人av在线| 亚洲国产欧美一区二区丝袜黑人| 亚洲图片欧美日韩| 一区二区三区丝袜| 蜜桃av免费看| 国产一区二区三区在线观看免费视频| 91丨porny丨探花| 欧美3p在线观看| 国产精选一区二区| 欧美视频免费看| 午夜精品视频网站| 91美女视频在线| 亚洲国产三级网| 这里只有精品6| 天天操天天色综合| 国产精品丝袜一区二区| 99re热这里只有精品视频| 久久精品视频在线观看免费| 国产免费成人| 免费看污污视频| 精品久久久久久久久久久aⅴ| 成人激情免费在线| 日本欧美韩国| 26uuu日韩精品一区二区| 国产黄色在线观看| 中文字幕av一区中文字幕天堂| 国 产 黄 色 大 片| 在线播放日韩导航| 精品一区二区无码| 黄色91在线观看| 欧美另类视频在线观看| 国产精品久久久久久久久果冻传媒 | 国产一区二区看久久| 黄色一级一级片| 亚洲久久一区二区| 国产人妻人伦精品| 国产精品久久久久蜜臀 | 国产午夜视频在线观看| 亚洲成人久久电影| 国产精品国产精品国产专区| 在线观看日韩一区| 可以免费在线观看的av| 亚洲伊人色欲综合网| 在线看的片片片免费| 中文一区在线播放| japanese中文字幕| 久久亚洲影视婷婷| 国产精品第七页| 成人精品鲁一区一区二区| 性xxxxxxxxx| 国产黄色91视频| 999热精品视频| 国内久久婷婷综合| 亚洲综合123| 国产专区欧美精品| 日韩欧美中文视频| 国产美女精品一区二区三区| 日韩成人精品视频在线观看| 另类中文字幕网| www.日本一区| 久久精品久久99精品久久| 天天干天天玩天天操| 麻豆国产欧美一区二区三区| 国产又黄又猛又粗又爽的视频| 视频精品一区二区| 性欧美videossex精品| 日本伊人精品一区二区三区观看方式| 亚洲乱码国产一区三区| 水蜜桃久久夜色精品一区的特点| 国产一区二区网| 国产美女精品| 九九九在线观看视频| 久久91精品国产91久久小草| 久久6免费视频| 国产精品自拍av| 一本色道久久hezyo无码| 99re在线视频这里只有精品| 一级黄色性视频| 国产精品久久久久天堂| 久久久久亚洲av片无码| 一区二区在线观看不卡| 日韩经典在线观看| 色狠狠av一区二区三区| 亚洲影视一区二区| 欧美大片在线观看一区| 色呦呦中文字幕| 亚洲欧洲日产国码av系列天堂| av资源在线观看免费高清| 久久精品国产亚洲精品| 国产偷倩在线播放| 欧美在线视频观看| 欧美黄色网络| 97影院在线午夜| 要久久电视剧全集免费| 久久久一二三四| 在线精品在线| 亚洲狼人综合干| 国产精品一品二品| 欧美性xxxx图片| 亚洲欧洲精品一区二区三区| 黄色在线观看免费| 在线区一区二视频| 国产手机视频在线| 亚洲精品视频播放| 2020国产在线视频| 热久久这里只有| 免费观看性欧美大片无片| 欧美久久电影| 国产在线不卡| 香蕉视频网站入口| 成人动漫在线一区| 九一在线免费观看| 精品美女久久久久久免费| 在线视频 中文字幕| 亚洲精品456在线播放狼人| 久久久久久国产精品免费无遮挡| 992tv成人免费影院| 亚洲欧美一级| 欧美一区二区三区四区夜夜大片| 欧美成人69| 久久黄色片网站| 久久影院电视剧免费观看| 欧美黑人猛猛猛| 欧美午夜电影一区| 午夜在线视频观看| 欧美激情在线视频二区| 亚洲ww精品| 欧美日韩在线播放一区二区| 亚洲国产午夜| 中文字幕avav| 国产精品无圣光一区二区| 欧美三级午夜理伦| 精品久久一区二区三区| 免费**毛片在线| 国产精品成人播放| 你懂的一区二区三区| 日韩伦理在线免费观看| 国产一区二区h| 精品无码一区二区三区蜜臀| 欧美在线播放高清精品| 日本韩国精品一区二区| 午夜精品蜜臀一区二区三区免费 | 久久亚洲美女| 好吊色视频一区二区三区| 一区二区三区四区蜜桃 | 亚洲电影免费观看高清| 天天干在线视频论坛| 91精品在线观| 亚洲精品久久| 又色又爽又黄视频| 亚洲欧洲成人av每日更新| 在线观看毛片视频| 中文字幕欧美日韩| 国产91在线播放精品| 日韩精品资源| 日韩福利视频导航| 日本午夜精品视频| 欧美日高清视频| 日韩在线资源| 国产在线精品自拍| 91精品在线观看国产| 91亚洲一区二区| 亚洲欧洲制服丝袜| 国产高清精品软件丝瓜软件| 久久影视电视剧免费网站清宫辞电视 | 天堂在线观看视频| 69av在线播放| 国产精品午夜一区二区三区| 欧美精品aaaa| 国产欧美精品区一区二区三区 | 欧美电影免费看| 日韩免费毛片| 看国产成人h片视频| 中文字幕电影av| 日韩欧美成人一区二区| 9999热视频在线观看| 蜜桃传媒视频麻豆一区| 日韩精品一级中文字幕精品视频免费观看 | 国产亚洲一二三区| 最新在线中文字幕| 久久天天躁日日躁| 欧美18免费视频| 成人在线观看黄| 国产精品福利av | 精品亚洲一区二区三区四区五区| 一区二区精品伦理...| 亚洲国产一区二区三区在线播| 国产麻豆精品久久一二三| 国产亚洲精品久久久久久无几年桃| 亚洲国产一区自拍| 91精品韩国| 特色特色大片在线| 91免费看片在线观看| 亚洲天堂一二三| 欧美大片在线看| 免费短视频成人日韩| 久国产精品视频| 黑人精品xxx一区一二区| 91xxx在线观看| 国产精品免费一区二区| 日本欧美一区二区| 国产午夜激情视频| 国产午夜精品全部视频播放| 国产麻豆精品| 99色精品视频| 日韩理论片在线| 飘雪影院手机免费高清版在线观看| 国产精品一区二区性色av | 亚洲小说图片| 日韩久久久久久久久久久| 色欲综合视频天天天| 色婷婷在线播放|