2011-01-26 83 views
23

我對web.config有一些一般性的問題,以及它如何在程序集引用中起作用。我一直在玩新的Razor視圖引擎,並且在啓動和運行時遇到了一些麻煩。在web.config中添加程序集引用

我的問題開始與一般的

類型或命名空間名稱「XXXXX」 不會在命名空間 「XXXXX」存在(是否缺少程序集 參考?)

現在我想這只是一個簡單的項目添加引用,我會在路上。但即使在我添加了對缺失的程序集的引用之後,我的項目仍然斷斷續續。

我找到了解決方案,我不得不在web.config中添加一個程序集引用。一旦我做到了這一切一切正常。

第一個,我想了解爲什麼需要添加一個對web.config的引用來解決這個問題。爲什麼項目參考不夠好?

第二個,當談到在web.config中添加引用時,我想了解語法。當我看到類似這樣的標記

<add assembly="System.Web.WebPages" />

似乎很清楚,我認爲我加入一個名爲裝配System.Web.WebPages。但在我的web.config中的完整的語法是

<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />

版本似乎言自明,但什麼是文化和公鑰用於?他們需要嗎?如果我不知道他們中的任何一個,會發生什麼情況,我可以放什麼東西?

回答

7

回答您的第一問題:

還有一個SO一個有用的答案的問題在這裏:

What is difference between web.config assemblies element and project file Reference element

本質上,它是Web項目和非Web項目之間的差異做Visual Studio(據我所知)。

回答您的第二問題:

這花了周圍挖的相當多,但在這裏你去:

文化 - 大多數組件應該是文化中性(假設這是設置在應用程序)。但是,如果你確實有文化敏感的組件,那麼這就是你指定組件文化的地方。

PublicKeyToken - 這是來自公鑰/私鑰對的公鑰,用於簽署程序集。這使得.NET能夠驗證它正在加載的程序集是否正確。這裏

更多有用信息:

http://en.wikipedia.org/wiki/.NET_assembly

3

一個老問題,已經回答了,但我碰到它,並希望增加:

公共密鑰令牌的重要性在於,它是絕對需要一個強命名的程序集。事實上,這就是你如何獲得PKT:簽署程序集(生成強名鍵)。而且您無法在GAC中存儲程序集而無需對其進行簽名。

因此,它不僅僅是一個識別程序集的問題......它是.NET驗證程序集簽名並確保程序沒有被篡改的加密方式。

0

每個人似乎都在給這個答案提供「解決辦法」。這很簡單:

<configuration> 
    <system.web> 
     <compilation debug="true" strict="false" explicit="true" targetFramework="4.0"> 
      <assemblies> 
       <add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" /> 
      </assemblies> 
     </compilation> 
    </system.web> 
</configuration> 
+0

這個答案不回答OP的問題:什麼是文化和PublicKeyToken用於?他們需要嗎?如果我不知道他們中的任何一個,會發生什麼情況,我可以放什麼東西? – 2017-06-02 22:33:50

相關問題