Путаница в ссылках на сборку Visual Studio 2008 SP1

Я использую Visual Studio 2008 SP1 в Windows XP SP3 для разработки решения .NET Compact Framework 3.5 SP1 для Windows CE 6.

Я хочу использовать SQL Server Compact 3.5 с пакетом обновления 2 (SP2) в своем решении, однако заметил нечто очень странное в том, как Visual Studio обрабатывает ссылки на сборки.

Я установил «SQL Server Compact 3.5 SP2 для Windows Desktop» (SSCERuntime_x86-ENU.msi) и «SQL Server Compact 3.5 SP2 для Windows Mobile» (SSCEDeviceRuntime-ENU .msi). Первый помещает две версии сборки System.Data.SqlServerCE и одну версию сборки System.Data.SqlServerCe.Entity в GAC Windows XP, тогда как последний, похоже, не помещает какую-либо сборку в Windows GAC от XP. Уже здесь это выглядит странно, потому что GAC сообщает о версиях двух сборок 3.5.1.0 и 3.5.0.0 для System.Data.SqlServerCE и 3.5.1.0 для System.Data.SqlServerCE.Entity, тогда как в установочных каталогах SQL Server Compact 3.5 с пакетом обновления 2 («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 < / em>, а не SP2. Я не устанавливал ни ваниль, ни SP1, так зачем они вообще есть?

Кроме того, в Visual Studio 2008 SP1, когда я пытаюсь добавить сборку System.Data.SqlServerCE из каталога «C: \ Program Files \ Microsoft SQL Server Compact Edition \ v3.5 \ Devices», 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. Может кто-нибудь просветить меня? Есть ли способ «исправить» это, не прибегая к частному развертыванию?


person Kal    schedule 29.09.2011    source источник


Ответы (1)


Версия файла: 3.5.8080.0.

Версия сборки - 3.5.1.0.

Вы можете подтвердить это, открыв свойства файла в проводнике и переключившись на вкладку «Версия» (ну, вы можете для файлов рабочего стола, которые также сообщают о себе как 3.5.8080.0, но на самом деле это 3.5.1.0. Вы можете 't для файлов устройств, но применимо то же объяснение)


Visual Studio вообще не взаимодействует с GAC, когда дело доходит до ссылок на сборки (фактически, см. Соответствующий вопрос Почему на вкладке .NET в диалоговом окне« Добавить ссылку »в Visual Studio не отображается содержимое GAC? < / а>)

person Damien_The_Unbeliever    schedule 29.09.2011
comment
Я понимаю. Мне было интересно, в чем разница между версией файла и версией сборки, так как я недавно заметил, что библиотеки DLL имеют две версии на вкладке «Версия», и они всегда имеют одинаковое значение несколько раз, когда я их видел (в других библиотеках DLL). Я погуглил о разнице после того, как вы указали, что значения разные. Теперь я понимаю разницу между этими двумя свойствами. Я также только что узнал, что сборки в GAC не имеют версии файла. Вместо этого у них есть версия продукта. Для System.Data.SqlServerCE он просто имеет то же значение, что и Версия файла. - person Kal; 29.09.2011