app.config для WinForm .NET 4 для частного развертывания SQL Server CE SP2 - PullRequest
0 голосов
/ 28 июля 2011

Мое приложение Visual Studio 2010 (C #) работает, и я пытался развернуть его с помощью проекта установки всю эту неделю, но безуспешно.

Я начал с веб-блога Стива Ласкера по Частное развертывание SQL Server Compact с помощью ADO.NET Entity Provider . Он заставил меня изменить файл app.config проекта, включив в него следующее:

  <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.50, Culture=neutral, PublicKeyToken=89845dcd8080cc91"/>
    </DbProviderFactories>  
  </system.data>

Эта установка прошла успешно только на тех компьютерах, на которых SQL Server CE уже установлен (например, MY только для ПК).

Я подошел поближе к статье и заметил, что она была написана в 2008 году, но Дэвид V оставил комментарий со ссылкой на SQL CE Team статью Устранение неполадок: частное развертывание поставщика ADO.NET Entity Framework (System.Data.SqlServerCe.Entity.dll) SQL Server Compact 3.5 с пакетом обновления 2 (SP2) в папке приложения не работает . В своей статье они сказали, что мне нужно добавить «перенаправление привязки сборки» (плохая ссылка) и добавить файл app.config со следующей информацией:

  <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>

Итак, я с установщиком, который не устанавливает.

  <?xml version="1.0"?>
  <configuration>
    <appSettings>
      <add key="LastRun" value=""/>
      <add key="UserName" value=""/>
    </appSettings>
    <startup useLegacyV2RuntimeActivationPolicy="true">
      <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0,Profile=Client"/>
    </startup>
    <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.50, 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>
  </configuration>

Мой app.config файл поврежден?

Мое приложение по-прежнему работает нормально, но установщик не может ничего установить. Ошибка установщика всегда 2727 для временного имени файла, которое изменяется:

ОТЛАДКА: Ошибка 2727: запись каталога '_1083472CD2EB47548297E3336FCD9A58' не существует в таблице каталога

Что мне с этим делать?

Кто-нибудь успешно развернул Microsoft SQL CE Server SP2 для частного экземпляра?

1 Ответ

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

Нашел решение для Code Project под названием Создание частной установки для SQL Compact , которое исправило мои проблемы.

По сути, все выглядит так, что установщик VS не создавал папки и не копировал файлы, необходимые для SSCE. Ссылка выше подробно описывает, как это сделать.

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

...