【问题标题】:How to deploy SQL CE 4 CTP to shared hosting?如何将 SQL CE 4 CTP 部署到共享主机?
【发布时间】:2010-08-12 14:51:23
【问题描述】:

如何将带有 EF4 的 SQL CE 4.0 部署到 ASP.NET MVC 2.0 的共享主机提供商?

我已在我的 bin 文件夹中包含 System.Data.SqlServerCe.dll 和 amd64 + x86 目录,但不断收到“.net provider not found”。我意识到它目前在 CTP 中,但这只是为了测试目的。我的项目 + 主机配置为 .net 4.0

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-2 deployment entity-framework-4 sql-server-ce


    【解决方案1】:

    借助 Visual Studio 2010,现在可以通过使用“可部署依赖项”轻松地将 SQL CE 4 部署到共享托管环境。您无需手动将 dll 复制到您的 bin 文件夹或修改您的 web.config。这两个都是为你完成的。

    “我们可以通过几个简单的步骤在网站或 Web 应用程序项目中包含所需的程序集。您在解决方案资源管理器中右键单击项目节点并选择“添加可部署依赖项...”上下文菜单项。”


    (来源:msdn.com

    (http://blogs.msdn.com/b/webdevtools/archive/2011/01/06/how-to-bin-deploy-sql-compact-edition-4-0-and-razor-web-projects.aspx)

    【讨论】:

    【解决方案2】:

    有两种可能导致这个问题:

    1. 当您使用 Windows Installer 在开发计算机上安装 SQL CE 时,将为提供程序添加一个 machine.config 条目。但是,当您部署到主机时,provider 条目可能不存在,因此您应该将此条目添加到您的 web.config 中(我猜尤其是为了让 EF 工作):

      <system.data>
        <DbProviderFactories>
         <add 
          name="SQL Server Compact Edition 4.0" 
          invariant="System.Data.SqlServerCe.4.0"
          description=".NET Framework Data Provider for Microsoft SQL Server Compact Edition 4.0" 
          type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
        </DbProviderFactories>
      </system.data>
      
    2. 编辑:幸运的是,Microsoft 解决了 SQL CE 4.0 RTM(版本 4.0.8482.1)中的部署问题,该问题于 2011 年 1 月 12 日发布。 “Private”文件夹包含 x64 和 x86 相关的 DLL 文件,现在还包含 amd64\Microsoft.VC90.CRT 和 x86\Microsoft.VC90.CRT 子文件夹下所需的 C++ 运行时 DLL。所以从现在开始,部署 Private 文件夹中的所有 DLL 和文件夹会部署 Compact 正常工作所需的所有文件。 SQL CE 4.0 CTP 看起来很有希望,但部署仍然很糟糕,我们仍然需要包含几个本机 DLL( amd64 和 x86 目录,这很丑陋),此外还有对 Visual C++ 2008 Runtime Libraries SP1 的依赖,似乎没人知道。 我们应该如何确保共享主机有这个修复?我希望我们能够简单地通过包含 System.Data.SqlServerCe.dll(以及用于 EF 支持的 System.Data.SqlServerCe.Entity.dll)来进行部署。我希望他们将来会发布一个完全托管的版本(如 VistaDB)。至少 MS 应该强制此运行时与 .Net Framework 4.0 一起安装,更多信息请参见下文:

      安装 SQL Server 使用 Windows 的 Compact 4.0 CTP1 安装程序 (.exe) 文件,也安装 Visual C++ 2008 运行时库 SP1。如果 SQL Server Compact 4.0 CTP1 是 私下部署 应用程序的文件夹如下 必须出现在机器上 SQL Server Compact 运行 正确:

      1.安装 .NET Framework 3.5 SP1 也会安装 Visual C++ 2008 运行时库 SP1。

      2.Visual C++ 2008 Runtime Libraries SP1 可以下载安装 从下面给出的位置: http://go.microsoft.com/fwlink/?LinkId=194827

      请注意,安装 .NET Framework 2.0 或 3.0 或 4 不安装 Visual C++ 2008 Runtime Libraries SP1。

    【讨论】:

    • 知道如何将 Visual C++ 2008 Runtime 部署到共享主机(如果尚未部署)?
    • 我不确定您是否可以部署运行时。也许确定所需的运行时 DLL 并部署到 bin\x86 和 bin\amd64 文件夹可能会起作用。顺便说一句,我在回复中添加了另一种可能性(web.config 设置),这可能会解决您的问题。
    【解决方案3】:
    猜你喜欢
    • 2020-09-30
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 1970-01-01
    • 2018-06-05
    • 2010-11-24
    • 1970-01-01
    • 2022-06-18
    相关资源
    最近更新 更多