2012-11-26 35 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

相关问题