簡體   English   中英

MVC(2)視圖可以引用GAC中的程序集嗎

[英]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>

您很可能需要添加包含此文件中使用的類的名稱空間。

更新1

您可能還需要在根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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM