0

我使用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一起工作。有人可以启发我吗?有没有办法“解决”这个,而不诉诸私人部署?

回答

1

文件版本是3.5.8080.0。

组件版本是3.5.1.0。

您可以通过在资源管理器中打开文件的属性并切换到“版本”选项卡来确认这一点(对于桌面文件,也可以报告自己为3.5.8080.0,但实际上是3.5。 1.0。你不能在设备上的文件,但同样的解释适用)


的Visual Studio确实与GAC在所有时候还引用组件不相互作用(事实上,看到相关的问题Why does the .NET tab in the 'Add Reference' dialog in Visual Studio not list the contents of the GAC?

+0

我明白了。我一直在想,文件版本和程序集版本有什么区别,因为我最近注意到DLL在版本选项卡中有两个版本,并且在我看到它们的时候(在其他DLL中),它们总是有相同的值。在你指出数值不同之后,我搜索了这个差异。现在我明白了这两个属性之间的区别。我还发现GAC中的程序集没有*文件版本*。相反,他们有一个*产品版本*。对于System.Data.SqlServerCE,它恰好与* File Version *具有相同的值。 – Kal