如果這是愚蠢的問題,我很抱歉,但是我花了兩天時間解決這個問題,並且無法使其工作。 這裏就是我所做的:無法訪問安裝到GAC中的程序集
- 創建一個新的類庫項目
- 添加了一個簡單方法
sayHi()
返回一個字符串 - 在屬性檢查「程序集簽名」,並使用強名稱密鑰文件的項目
- 編譯應用程序並將DLL複製到c:\ windows \ assemblies(並且我也嘗試使用具有類似結果的gacutil工具)
- 將以下內容添加到machine.config
<compilation><assemblies><add assembly="gacTestClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31418215e131202e" />
。這工作得很好,因爲如果我拼錯程序集名稱,任何.net應用程序將失敗並抱怨該行。 - 在.NET框架配置工具中使用程序集緩存查看器,我可以看到緩存中的程序集。
- 現在,當我嘗試使用它時,我的應用程序失敗,當我做
using gacTestClass
或gacTestClass.gacTest.sayHi()
。我收到一個錯誤,指出無法找到類型或名稱空間。
任何幫助表示讚賞。
編輯:
好吧,我跟着一個建議,我將努力使這項工作與web.config中,而不是machine.config中。
我將下列內容添加到我的web.config <compilation><assemblies><add assembly="gacTestClass, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31418215e131202e" />
,並確保它通過拼寫錯誤的名稱,並觀看應用程序失敗。 現在,當我嘗試將using gacTestClass
添加到我的.cs文件的頂部時,出現錯誤,指出無法找到類型或名稱空間。
以防萬一,這裏的代碼爲gacTestClass
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;
[assmbly:AssemblyKeyFile("sayHi.snk")]
namespace gacTestClass {
public class gacTest {
public string sayHi() {
return "Hello there!";
}
}
}
我認爲,即使裝配在GAC中,您也必須添加參考。好處是程序集不需要複製到任何文件夾。 – 2009-12-10 15:44:14
您可以複製/粘貼您收到的特定錯誤消息嗎?如果將程序集添加到machine.config或web.config中,則不需要在應用程序中添加引用。 – sestocker 2009-12-10 15:47:10
@sestocker:如果他的app不是ASP.Net,他會的。 – SLaks 2009-12-10 15:50:03