Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2008 VisualStudio2008SP1程序集引用混淆_Visual Studio 2008_Version_Gac_.net Assembly_Sql Server Ce 3.5 - Fatal编程技术网

Visual studio 2008 VisualStudio2008SP1程序集引用混淆

Visual studio 2008 VisualStudio2008SP1程序集引用混淆,visual-studio-2008,version,gac,.net-assembly,sql-server-ce-3.5,Visual Studio 2008,Version,Gac,.net Assembly,Sql Server Ce 3.5,我正在Windows XP SP3上使用Visual Studio 2008 SP1为Windows CE 6开发一些.NET Compact Framework 3.5 SP1解决方案 我想在解决方案中使用SQL Server Compact 3.5 SP2,但是我注意到Visual Studio处理程序集引用的方式非常奇怪 我已经安装了“适用于Windows桌面的SQL Server Compact 3.5 SP2”(sCeruntime_x86-ENU.msi)和“适用于Windows M

我正在Windows XP SP3上使用Visual Studio 2008 SP1为Windows CE 6开发一些.NET Compact Framework 3.5 SP1解决方案

我想在解决方案中使用SQL Server Compact 3.5 SP2,但是我注意到Visual Studio处理程序集引用的方式非常奇怪

我已经安装了“适用于Windows桌面的SQL Server Compact 3.5 SP2”(sCeruntime_x86-ENU.msi)和“适用于Windows Mobile的SQL Server Compact 3.5 SP2”(sCedeviceruntime 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’ed程序集检索的,它甚至不应该用于.NETCompact Framework。“C:\Program Files\Microsoft SQL Server Compact Edition\v3.5\Devices”中的实际版本号应该也是3.5.8080.0

我知道可以使用私有部署,如中所述,但我仍然感到困扰的是,当我没有特别求助于私有部署时,VisualStudio似乎引用了错误的平台版本的程序集

也许我只是不明白Visual Studio如何与GAC协同工作。有人能启发我吗?有没有一种方法可以在不使用私有部署的情况下“修复”此问题?

文件版本为3.5.8080.0

程序集版本为3.5.1.0

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



VisualStudio在引用程序集时根本不与GAC交互(事实上,请参见相关问题)

我明白了。我一直想知道文件版本和程序集版本之间有什么区别,因为我最近注意到DLL在“版本”选项卡中有两个版本,并且在我看到它们的几次(在其他DLL中)中,它们的值总是相同的。在你指出这些值是不同的之后,我在谷歌上搜索了一下。现在我明白了这两个属性之间的区别。我还发现GAC中的程序集没有文件版本。相反,他们有一个产品版本。对于System.Data.SqlServerCE,它恰好与文件版本具有相同的值。