2013-07-24 41 views
0

我有外部剃鬚刀意見的問題。 在我的項目中,我有主MVC Web程序集和動態加載外部類庫程序集(從數據庫)與他們自己的控制器,視圖和模型。這些程序集不是在運行時直接引用和加載的。外部剃鬚刀意見不能看到外部模型

我能夠通過爲Controllers創建一個自定義控制器工廠來完成整個系統的工作,這是一個用於Views的自定義虛擬路徑提供程序。視圖是我的外部程序集中的嵌入式資源。

我遇到的問題是當我從外部程序集創建一個強類型的外部視圖和模型類時,視圖無法在運行時編譯,因爲程序集沒有傳遞給剃刀編譯器。所以,我得到以下錯誤:

Compiler Error Message: CS0234: The type or namespace name 'MyPlugin' does not exist in the namespace 'MyNamespace' (are you missing an assembly reference?)

Source Error:

public class 
_Page_ExternalViews_MyController_MyAction_cshtml : System.Web.Mvc.WebViewPage<MyNamespace.MyPlugin.Models.MyModel> 
{ 

它,當我使用的動態模型,模型類從我的主要構件組合或直接在我的web項目中引用的程序工作正常。我確信在編譯外部剃鬚刀視圖之前已經加載了外部程序集,因爲我的控制器工作得很好。

我開始尋找RazorGenerator項目來預編譯我的外部視圖,但無法取得任何進展(沒有任何東西正在生成),我甚至不確定我是否正在尋找正確的方向,因爲我的程序集在運行時加載,我必須使用我自己的ViewEngine和ControllerFactory。

+0

你有沒有嘗試過任何這裏提到的選項:http://stackoverflow.com/questions/4953330/razor-based-view-doesnt-see -referenced-assemblies –

+0

@Brent我無法在web.config中引用我的程序集,因爲它們在Web應用程序啓動之前不可用。否則是的,它會解決問題。 –

+0

@Maskim你引用了多少個外部裝配體?它只是一個,還是有幾個? –

回答

0

我能在我的組件RazorGenerator的Visual Studio擴展(不RazorGenerator.Mvc之一)預編譯的意見。

在程序集編譯之前,它基本上將.cshtml剃鬚刀視圖轉換爲.cs文件,WebViewPage類。 而在我的web項目,我必須實現我自己VirtualPathProviderViewEngine類似this one

1

嘗試在動態程序集的視圖中使用using指令。

@using MyNamespace.MyPlugin.Models; 
@using MyNamespace.MyPlugin; 

+0

不,它沒有幫助。當視圖編譯出於某種原因時,它不知道我的外部程序集。 –

+0

你把它加載到同一個應用程序域? –