7

注意到這種奇怪的事情正在進行,也許這是一個錯誤,但我可能自己錯過了一些東西。未在網絡中部署EntityFramework.SqlServer發佈

假設您有兩個項目的解決方案:一個是MVC3項目,另一個是用於數據訪問的類庫(實體框架模型類,數據上下文等)。

該類庫引用EntityFramework(EF6)和EntityFramework.SqlServer庫。

而MVC項目引用這個類庫DALDAL庫可能會被應用程序之外的其他代碼使用,因此可以將其與Web項目分離。

無論如何,似乎在發佈MVC3項目時,進程錯過了將EntityFramework.SqlServer程序集複製到publish/bin目錄。但是,它確實發佈基地EntityFramework DLL以及其他庫和類庫本身。

有沒有辦法讓發行商發佈所需的SqlServer驅動程序呢?

回答

16

好的,所以在一些額外的Google-fu之後,似乎解決方法是創建一些對缺少程序集的引用,即使代碼未被使用。

.NET MVC 3 Deployment package missing references

而且我用的解決方法是添加簡單的測試線在數據方面的構造函數:

bool instanceExists = System.Data.Entity.SqlServer.SqlProviderServices.Instance != null; 
+1

您的意思是在Content.tt文件中?您是否會在您進行更改時被覆蓋? – RichC

+1

我不知道爲什麼會發生這種情況,但我只是創建了一個內部類,並將此語句放入構造函數中,並解決了問題。 – Lereveme

+0

@RichC,不,這與TTs無關。我應該補充說,這是一個修復代碼第一隻 – Crypton

3

我有同樣的情況。我通過NuGet將EF安裝到了我的web項目中(我仍然不使用它,只是引用了庫),它解決了我的問題。

此外,我不能重現這種情況下的其他解決方案 - 我創建了新的Web項目和引用新的庫 - 但部署工程。

1

在您的項目的包文件中添加實體框架包