9

如何將EF4的SQL CE 4.0部署到ASP.NET MVC 2.0的共享託管提供程序?如何將SQL CE 4 CTP部署到共享主機?

我在我的bin文件夾中包含了System.Data.SqlServerCe.dll和amd64 + x86目錄,但不斷髮現「找不到.net提供程序」。我意識到它目前在CTP中,但這僅用於測試目的。我的項目+主機配置爲.NET 4.0

回答

3

有兩種可能性,這可能會導致此問題:

  1. 當你在開發計算機上安裝SQL CE與Windows安裝程序,一個條目的機器。配置爲供應商添加。但是,當你部署到託管,供應商的入口將不再可能存在,因此應將此條目添加到你的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. 編輯:還好微軟解決了2011年1月12日發佈的SQL CE 4.0 RTM(版本4.0.8482.1)中的部署問題。 「Private」文件夾包含x64和x86相關的DLL文件,現在還包含amd64 \ Microsoft.VC90.CRT和x86 \ Microsoft.VC90.CRT子文件夾下所需的C++運行時DLL。因此,從現在開始,將私人文件夾中的所有DLL和文件夾都部署到Compact所需的所有文件才能正常工作。 SQL CE 4.0 CTP看起來很有前途,但部署仍然很糟糕,我們仍然需要包括幾個本地DLL(amd64和x86目錄,這很醜),另外還有一個依賴於Visual C++ 2008運行時庫SP1,似乎沒有人意識到。 我們應該如何確保共享主機有此修復?我希望我們能夠簡單地通過包含System.Data.SqlServerCe.dll(和EF支持的System.Data.SqlServerCe.Entity.dll)進行部署。我希望他們將來能夠發佈完全託管的版本(如VistaDB)。至少有MS應該被迫與.Net框架4.0的安裝沿着這條運行時,請參閱下面的詳細資料:

    使用Windows安裝程序 (.exe)文件安裝的SQL Server 緊湊型4.0 CTP1,還安裝 Visual C++ 2008運行時庫 SP1。如果SQL Server精簡4.0 CTP1是 在 應用程序的文件夾私下部署以下 必須存在在機器上 SQL Server精簡運作 正確:

    1.安裝的.NET Framework 3.5 SP1還會安裝Visual C++ 2008 運行時庫SP1。

    2.Visual C++ 2008運行時庫SP1可以下載並安裝從位置 如下: http://go.microsoft.com/fwlink/?LinkId=194827

    注意,安裝的.NET Framework 2.0或3.0或4沒有安裝Visual C++ 2008運行時庫SP1。

+0

任何想法如何在Visual C++ 2008運行時部署到,如果它不是已經部署共享託管? – 2010-10-05 15:07:10

+1

我不確定您是否可以部署運行時。也許確定所需的運行時DLL並部署到bin \ x86和bin \ amd64文件夾可能會起作用。順便說一句,我在我的回覆中添加了另一種可能性(一個web.config設置),可以解決您的問題。 – gtdev 2010-10-06 01:01:38

10

與Visual Studio 2010現在有一種簡單的方法,通過使用「部署的相關性」,以SQL CE 4部署到一個共享的託管環境。您不需要手動將dll複製到bin文件夾或修改web.config。這兩個都是爲你完成的。

「我們可以包括一個Web站點或Web應用程序項目用幾個簡單的步驟所需的程序集。你右擊Solution Explorer中的項目節點,然後選擇‘添加部署的依賴......’上下文菜單項。」

Deployable Dependencies http://blogs.msdn.com/cfs-filesystemfile.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-63-56-metablogapi/4403.MenuItem_5F00_1.png

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

+1

這個功能太棒了! – 2012-04-11 01:38:35

+1

2012年及以後版本中不再存在此功能:[Visual Studio 2012中缺少可部署的依賴項選項](http://samirvaidya.blogspot.fr/2013/02/deployable-dependencies-option-missing.html) – ChrisW 2016-05-10 13:58:37

+0

也不再必要。從同一鏈接「,它與Visual Studio 2012一起構建到NuGet Package Manager中,以便所有必需的程序集自動部署」 – 2016-05-10 18:43:15