[英]Can MVC (2) views reference an assembly in the GAC
我有一個MVC2視圖,該視圖使用在類庫程序集中定義的類型的屬性。
例如
<div><%= Model.MyClass.MyProperty %></div>
如果我的類庫程序集使用Copy Local = false引用(因此它不會復制到bin),則在視圖加載時顯示“在MyClass類型上未找到MyProperty,我是否缺少引用?”時會出現異常。 如果裝配的Copy Local = true,則視圖將正確加載。
我在其上部署此MVC站點的服務器已經在GAC中具有類庫程序集。 在我請求此視圖之前,MVC站點會找到它並在各種控制器操作中使用它,但是當該視圖嘗試直接內聯使用時,它會因上述錯誤而崩潰。 我不想維護同一程序集的兩個副本。 有什么方法可以使視圖找到顯然已經加載並正在使用的GAC組件?
視圖在web.config
有自己的using
部分。 此特定的web.config
位於Views文件夾的根目錄中,而不是應用程序的根目錄中。 這是一個示例(由於這是MVC 5配置,可能會有細微差別):
<system.web.webPages.razor>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=5.1.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages pageBaseType="System.Web.Mvc.WebViewPage">
<namespaces>
<add namespace="System.Web.Mvc" />
<add namespace="System.Web.Mvc.Ajax" />
<add namespace="System.Web.Mvc.Html" />
<add namespace="System.Web.Optimization"/>
<add namespace="System.Web.Routing" />
<add namespace="WebApplication1" />
</namespaces>
</pages>
</system.web.webPages.razor>
您很可能需要添加包含此文件中使用的類的名稱空間。
您可能還需要在根web.config中注冊程序集。
<compilation debug="true" targetframework="4.0" >
<assemblies>
<add assembly="Company.Web.Whatever, Version=1.2.3.4, Culture=neutral, PublicKeyToken=521aae76165ca3e4" />
</assemblies>
</compilation>
您需要記住的是,這樣的引用需要完整的程序集名稱才能起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.