我在 Windows XP SP3 上使用 Visual Studio 2008 SP1 为 Windows CE 6 开发一些 .NET Compact Framework 3.5 SP1 解决方案。
我想在我的解决方案中使用 SQL Server Compact 3.5 SP2,但是我注意到 Visual Studio 处理程序集引用的方式非常奇怪。
我已经安装了“SQL Server Compact 3.5 SP2 for Windows Desktop ”(SSCERuntime_x86-ENU.msi)和“SQL Server Compact 3.5 SP2 for Windows Mobile ”(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。我既没有安装 vanilla 也没有安装 SP1,那么为什么它们还在那里呢?
此外,在 Visual Studio 2008 SP1 中,当我尝试从“C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\ Devices ”目录添加 System.Data.SqlServerCE 程序集时,Visual Studio 2008 SP1 会报告一个版本属性面板中的 3.5.1.0 的数量。这个版本号似乎是从 GAC 的程序集中检索到的,它甚至不应该用于 .NET Compact Framework。“C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\ Devices ”中的真实版本号应该是 3.5.8080.0。
我知道可以使用私有部署,如http://msdn.microsoft.com/en-us/library/gg213826.aspx中所述,但我仍然对 Visual Studio 似乎正在引用的事实感到困扰当我没有专门求助于私有部署时,程序集的平台版本完全错误。
也许我只是不明白 Visual Studio 如何与 GAC 结合使用。有人可以启发我吗?有没有办法在不诉诸私有部署的情况下“解决”这个问题?