适用于WinForm .NET 4的app.config到私有部署SQL Server CE SP2

时间:2011-07-27 21:17:32

标签: c# visual-studio-2010 installer app-config

我的Visual Studio 2010(C#)应用程序正在运行,我本周一直在尝试使用安装项目部署它,但没有成功。

我从Privately Deploying SQL Server Compact with the ADO.NET Entity Provider开始关注Steve Lasker的网络博客。我让我修改项目的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的PC上成功运行(例如 MY PC)。

我仔细观察了这篇文章,并注意到它是在2008年写的,但David V留下了评论链接到 SQL CE Team 的文章{{3} }。在他们的文章中,他们说我必须添加“程序集绑定重定向”(错误链接)并在我的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:

  

DEBUG:错误2727:目录表中不存在目录条目“_1083472CD2EB47548297E3336FCD9A58”

我该怎么办?

是否有人为私有实例成功部署了Microsoft SQL CE Server SP2?

1 个答案:

答案 0 :(得分:2)

在Code Project上找到一个名为Creating a Private Installation for SQL Compact的解决方案,解决了我的问题。

基本上,看起来这一切都归结为VS安装程序没有创建文件夹或复制SSCE所需的文件。上面的链接详细介绍了如何做到这一点。

我希望这有助于其他人。