2012-11-26 36 views
1

我有一個v4.0程序集,它既在GAC(4.0位置)中,也在運行時使用,並且位於磁盤上供設計時使用。我在註冊表中設置了designtime DLL的位置,以便通過在Visual Studio中添加引用來添加它。.NET 4.0應用程序不從GAC中提取DLL

我也有一個使用此DLL的服務。我通過添加引用添加它,並且可以在引用其類時毫無問題地進行編譯。但是,當我運行我的服務時,它不會從GAC中提取DLL,並且出現服務在GACked DLL中找不到類的錯誤。我可以將「copy local」更改爲true,並且它可以正常工作,但這會影響在GAC中使用DLL的目的。

有關如何解決問題的任何建議?


我可以添加作爲參考到一個新的控制檯應用程序和訪問對象。不知道該服務的問題是什麼。


它可能不被發現的類型..但我可以引用從控制檯應用程序的類型(使用GACked組裝),所以我不知道爲什麼運行該服務時,它不能找到它。

+0

我不確定是什麼原因造成這種情況。但是我會在運行程序時嘗試運行Process Monitor。它可能會揭示理解爲什麼無法達到DLL的線索。 –

+1

您使用錯誤版本的gacutil.exe的一些可能性.NET 4使用不同的GAC。從Fuslogvw.exe獲得幫助 –

+0

@Hans - 我使用的是正確的gacutil(4.0.30319.1),它位於正確的GAC中。 – zimdanen

回答

3

您將需要添加在machine.config

<system.web> 
    <compilation> 
     <assemblies> 
      <add assembly="YOUR_DLL_NAME, Version=1.1.0.0, Culture=neutral, PublicKeyToken=YOUR_KEY_TOKEN" /> 
     </assemblies> 
    </compilation> 
</system.web> 

根據您的設置對System.Web標籤下組裝,配置文件,可以發現: C:\ WINDOWS \ Microsoft.NET \ Framework64 \ v4.0.30319 \ Config \ machine.config 或 C:\ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Config \ machine.config

+0

謝謝!看起來像[如果我不使用預編譯的代碼,需要基於配置的引用](http://stackoverflow.com/a/530688/128217)。 – zimdanen

相關問題