2015-05-28 39 views
1

我通過將名稱空間分隔爲單獨的項目來重構我的MVC/Entity Framework項目。所以我現在有這樣的結構:當我在Visual Studio中更改配置時,項目無法生成

MySolution.Data 
MySolution.Data.Contracts 
MySolution.Model 
MySolution.Website 

一切都在我的開發環境中建立和運行。然而,當我試圖部署到我的「分段」服務器時,我遇到了問題。

我遇到的問題是,當我將解決方案配置更改爲「分段」時,它不會生成。在配置管理器中,所有項目也都有「分段」配置。我認爲這些是在添加新項目時創建的。

我嘗試的第一件事是創建一個新的解決方案配置,其中包含從Debug命名爲「Solution 2」的所有內容。沒有運氣,仍然失敗。

然後我想,我只需要一個不同的網站項目配置 - 我在哪裏轉換配置文件。所以我改變了解決方案的配置,告訴它構建和部署Hub.Model的「調試」配置 - 從第一個錯誤消息看起來像問題項目。果然現在就建立起來了。 (263)

第一錯誤信息是:

類型或命名空間名稱「模式」不存在於命名空間「System.ComponentModel.DataAnnotations」存在(是否缺少程序集引用?) MySolution.Model

所以看起來與實體框架的dll引用一個問題

雖然我有現在一個解決辦法,我很擔心,這不明原因的錯誤會回來咬我在某些時候在未來 - 可能就在我即將部署緊急修復時。

那麼,當我更改項目配置時,爲什麼我的一個項目無法構建?

+0

嗯這聽起來奇怪。與命名空間相關的所有263錯誤是否都不存在? – Luke

+0

@Coulton它當然看起來像是根本原因。關於爲什麼它會建立在一個配置中而不是另一個配置中。無論如何,我繼續我的旅程 - 這是從MVC 4升級到MVC 5。所以我發佈了這個問題後升級了一些軟件包,並且我從Models項目中完全刪除了MVC。現在它可以構建,無論配置如何,所以可能會好起來的。謝謝 – Colin

+0

很好聽,一切順利! – Luke

回答

1

您需要確保您正在安裝適當的nuget軟件包並引用所有程序集。

你已經證明錯誤的解決方案如下:(Reference

你必須引用此命名空間中定義 (它不會被默認在Visual Studio模板中引用的組件)。打開 您的參考管理器並添加對 System.ComponentModel.DataAnnotations程序集的引用(解決方案資源管理器 - > 添加引用 - >選擇.Net選項卡 - >從列表中選擇 System.ComponentModel.DataAnnotations)。然後選擇該參考,並在屬性設置「複製本地」爲true,一旦你發佈它將在你的bin文件夾中,並且不會影響任何服務器,不管它是x32還是x64。

編碼愉快:)

+0

問題不僅僅是爲什麼我的一個項目無法構建 - 因爲實際上它不是!問題是爲什麼當我更改項目配置時會失敗?無論如何,我後來升級到ASP.NET 4.6,在那個過程中我已經刪除了包並重新安裝了其他包,現在問題已經消失。所以我會接受你的回答!在Visual Studio中的故障我懷疑... – Colin

+0

確實不錯,實際上在ASP.NET 4.5版本之前,現在發生了這樣的問題,希望在更改項目配置或發佈後不會再出現這樣的問題。 – NewDirection

相關問題