2013-06-05 48 views
0

我有一個網站項目的EntityFramework 5EF 5和網站衝突

我會放一些背景問題:在部署時,項目類型的網站,而不是Web應用程序或MVC,因此,我只需將所有文件複製到服務器,並在第一次訪問時編譯所有文件。這就是我認爲導致問題的原因。

該項目的目標是.Net 4.0,所以當我從nuget安裝EntityFramework時,dll文件版本是4.4。使用IIS Express從VisualStudio運行項目很好(因爲VisualStudio知道目標框架是4並使用.Net framework 4 dll編譯項目),但是當將文件複製到安裝了.Net Framework 4.5的生產服務器時,首次訪問到達,網站編譯對.Net框架4.5 dll和一個問題出現,因爲EntityFramework 4.4包含類的定義(如列),也包含在.Net 4.5 dataannotations dll內。

The type 'System.ComponentModel.DataAnnotations.Schema.ForeignKeyAttribute' exists in both 'c:\Windows\Microsoft.NET\assembly\GAC_MSIL\System.ComponentModel.DataAnnotations\v4.0_4.0.0.0__31bf3856ad364e35\System.ComponentModel.DataAnnotations.dll' and 'c:\Users\jyuste\AppData\Local\Temp\Temporary ASP.NET Files\portalempleado\4700d3ec\2c948b16\assembly\dl3\1c8b81c9\750c5018_1e5dce01\EntityFramework.DLL' 

我想,升級項目.NET 4.5和更新的EntityFramework參考可以解決這個問題,但我不能現在就做。

您認爲還有其他解決方案嗎?

+0

你的'web.config'是否包含''? –

+0

是的: ...

回答

0

從你寫的內容來看,可能的解決方案是更改部署過程。

不是將C#源文件複製到目標服務器,而是先將站點本地發佈到任何目錄。發佈可以通過VS菜單中的「Build/Publish Web Site」選項完成。

這將編譯所有的源文件,並創建一個僅包含聲明代碼(*的.aspx,*。ASCX,*。ASMX等)和含/箱文件夾中的部署就緒的內在張力結構* .DLL文件編譯C#代碼。

只有將發佈的結構複製到目標服務器。

+0

是的,我已經認爲這種可能性,但客戶端的一個必要條件是能夠更改服務器上的代碼。 我認爲我的選擇是:更改目標框架或降級服務器上的.Net版本。 –