[英]Can't create migration because test projects won't build, even though main project can?
[英]Can MVC Views access all projects even though they aren't referenced by the project where the views are?
好的,所以我對以下數據發生了什么感到有點困惑。
我們的應用程序中有以下結構:
這是我們的用法:在 controller 中,我們調用位於 Portal.Core 中的 model,它通過調用 Portal.Data 進行填充,因此基本上 Web 永遠看不到數據。
關鍵在於:在 controller 中,例如我嘗試實例化一個名為 Client 的新 DTO object,如下所示:
var client = new Client();
它不會工作,這是預期的,它不知道 Client 是什么,甚至指定一個 using 也不會削減它。 沒關系。
但是,如果我嘗試在視圖中執行完全相同的行,Resharper 會將 using 添加到視圖中,然后沒有投訴,項目運行,我們可以在我們的視圖中使用 DTO 類。
那么問題來了,這是為什么呢? 我試圖阻止我們的后輩在視圖中使用 DTO 類,所以我特意刪除了對 Web 中數據項目的引用,但他們仍然可以使用這些類。 有人可以闡明一下嗎?
我用 ASPX 和 Razor 視圖運行了相同的測試。 在 ASPX 視圖中引用Client
失敗,但在 Razor 視圖中它們有效。 當您請求應用程序時,這些視圖是即時編譯的,所以我查看了“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\portal.web”中的一些文件夾和 cmdline 文件編譯視圖時顯式添加對程序集的引用。
似乎編譯 razor 視圖的過程添加了對 bin 文件夾中所有程序集的引用。 但是,查看 ASP.NET MVC 的源代碼,我無法確認這一點。
所以,我能得出的唯一結論是,這是使用 Razor 視圖引擎的副作用。
也就是說,您可能想要掃描 web.config 以查看它是否包含在使用assemblys 元素中。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.