我使用Windows XP SP3的Visual Studio 2008 SP1開發的Windows CE一些的.NET Compact Framework 3.5 SP1中的解決方案6.的Visual Studio 2008 SP1集引用混亂
我想使用的SQL Server Compact 3.5 SP2中我的解決方案,但是我注意到Visual Studio如何處理程序集引用很奇怪。
我已經安裝了(SSCERuntime_x86-ENU.MSI) 「的SQL Server Compact 3.5的Windows桌面SP2」 和 「SQL Server精簡3.5 SP2的Windows 移動」(SSCEDeviceRuntime-ENU.MSI)。前者將兩個版本的System.Data.SqlServerCE程序集和一個版本的System.Data.SqlServerCe.Entity程序集放入Windows XP的GAC中,而後者似乎沒有將任何程序集放入Windows XP的GAC中。在這裏,它看起來很奇怪,因爲GAC將這兩個程序集的版本報告爲System.Data.SqlServerCE的3.5.1.0和3.5.0.0,以及System.Data.SqlServerCE.Entity的3.5.1.0,而在安裝目錄中SQL Server Compact 3.5 SP2(「C:\ Program Files \ Microsoft SQL Server Compact Edition \ v3.5」和「C:\ Program Files \ Microsoft SQL Server Compact Edition \ v3.5 \ Desktop」),Windows資源管理器報告這兩個程序集版本3.5.8080.0。現在我知道3.5.0.0應該是vanilla SQL Server Compact 3.5(即否SP)和3.5.1.0應該是SP1而不是SP2。我沒有安裝香草或SP1,爲什麼他們甚至在那裏?
此外,在Visual Studio 2008 SP1中,當我嘗試從「C:\ Program Files \ Microsoft SQL Server Compact Edition \ v3.5 \ 設備」目錄添加System.Data.SqlServerCE程序集時,Visual Studio 2008 SP1在「屬性」面板中報告3.5.1.0的版本號。該版本號似乎是從GAC'ed程序集中檢索的,該程序集甚至不適用於.NET 精簡版框架。 「C:\ Program Files \ Microsoft SQL Server Compact Edition \ v3.5 \ 設備」中的實際版本號應該是3.5.8080.0。
我知道可以使用私人部署,如http://msdn.microsoft.com/en-us/library/gg213826.aspx所述,但我仍然爲這樣的事實感到困擾,即Visual Studio似乎在完全不引用程序集的錯誤平臺版本時特別是訴諸私人部署。
也許我只是不明白Visual Studio如何與GAC一起工作。有人可以啓發我嗎?有沒有辦法「解決」這個,而不訴諸私人部署?
我明白了。我一直在想,文件版本和程序集版本有什麼區別,因爲我最近注意到DLL在版本選項卡中有兩個版本,並且在我看到它們的時候(在其他DLL中),它們總是有相同的值。在你指出數值不同之後,我搜索了這個差異。現在我明白了這兩個屬性之間的區別。我還發現GAC中的程序集沒有*文件版本*。相反,他們有一個*產品版本*。對於System.Data.SqlServerCE,它恰好與* File Version *具有相同的值。 – Kal