ошибки при частном развертывании sql server compact 3.5 sp2 - PullRequest
4 голосов
/ 14 ноября 2010

Итак, я провел довольно много времени сегодня с sql lite и увидел, что провайдеры .net4 были очень нестабильны. Поэтому я решил, что буду использовать SqlCE. Предполагается, что zero config / install - это самый запутанный способ развертывания этой вещи.

Я проверяю многочисленные вопросы SO и эти статьи: http://blogs.msdn.com/b/stevelasker/archive/2008/10/22/privately-deploying-sql-server-compact-with-the-ado-net-entity-provider.aspx

http://blogs.msdn.com/b/sqlservercompact/archive/2010/05/12/troubleshooting-problem-with-private-deployment-of-sql-server-compact-3-5sp2-entity-dll.aspx

A Более обновленное краткое руководство:
http://robindotnet.wordpress.com/2010/02/28/how-to-deploy-the-sqlserver-compact-edition-software-locally/

Итак, вот моя проблема, без бита <runtime>, он работает на моей машине DEV, но НЕ на XPSp3 без сред выполнения SqlCE. Это дает мне FileIOLoadException

С тэгом <runtime> он работает на XpSp3, но на моем компьютере разработчика он говорит:

Не удалось загрузить файл или сборку 'System.Data.SqlServerCe, версия = 3.5.1.50, культура = нейтральная, PublicKeyToken = 89845dcd8080cc91' или одна из ее зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Я проверил этот ответ , но я ОЧЕНЬ растерялся. Кроме того, очевидно, что статьи блога msdn отключены, вам нужно включить все 7 библиотек вместе. И System.Data.SqlServerCe.dll, и System.Data.SqlServerCe.Entity.dll оба приходят из папки с именем «Private», где установлены среды выполнения.

 <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.3.5"></remove>
      <add name="Microsoft SQL Server Compact Data Provider" 
           invariant="System.Data.SqlServerCe.3.5" 
           description=".NET Framework Data Provider for Microsoft SQL Server Compact" 
           type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>
  </system.data>
   <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Data.SqlServerCe" publicKeyToken="89845dcd8080cc91" culture="neutral"/>
        <bindingRedirect oldVersion="3.5.1.0-3.5.1.50" newVersion="3.5.1.50"/>
      </dependentAssembly>
    </assemblyBinding>
  </runtime>

Как в мире эта нулевая конфигурация!? Я понятия не имею, что на самом деле идет не так, и что я сделал, чтобы исправить это? Разве нет документации по этому вопросу, кроме старых блогов?

Проще говоря, как только мне нужно будет выполнить развертывание, я просто хочу иметь возможность скопировать exe и другие файлы, и это должно работать. Так где находится ссылка / msdn / Документация / пошаговая инструкция о том, как развернуть?

Также sqlce будет работать на коробке с ТОЛЬКО установленным .net4, верно?

Ответы [ 2 ]

2 голосов
/ 29 июля 2011

У меня была очень похожая проблема, опубликованная на SO в 6851346 , и я просто решил ее.

Я не знаю, боретесь ли вы с этим, но я нашелрешение по проекту кода под названием Создание частной установки для SQL Compact , которое исправило мои проблемы.

Надеюсь, это поможет и другим.

1 голос
/ 29 июля 2011

Используете ли вы Entity Framework?Если нет, тег времени выполнения не требуется.

Вы должны изменить это: Version = 3.5.1.0 (в теге add) на 3.5.1.50 и убедитесь, что вы используете System.data.SqlServerCe.dll из личной папки (у нее есть эта специальная сборкаверсия)

...