如何从web.config引用程序集?

时间:2011-01-13 16:36:49

标签: .net asp.net assembly-resolution publickeytoken

我需要将对'System.XML.dll'程序集的引用添加到web.config中(为了尝试解决问题,请参阅此处:Problem with Extension method: IXmlLineInfo)。

我尝试将以下行添加到“程序集”部分:

<add assembly="System.Xml, Version=2.0.5.0, Culture=neutral,
     PublicKeyToken=7cec85d7bea7798e"/>

导致错误:

  

描述:期间发生错误   处理配置文件   需要为此请求提供服务。   请查看具体错误   详情如下并修改您的   配置文件适当。

     

分析程序错误消息:无法加载   文件或程序集'System.Xml,   版本= 2.0.5.0,文化=中立,   PublicKeyToken = 7cec85d7bea7798e'或   其中一个依赖项。位于   程序集的清单定义   与程序集引用不匹配。   (HRESULT异常:0x80131040)

说实话,我不确定是否正确指定了版本/ Culture / PublicKeyToken。

我有几个不同版本的System.XML.dll:

  • C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v3.5 \ Profile \ Client \ System.XML.dll
  • C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ Profile \ Client \ System.XML.dll
  • C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework.NETFramework \ v4.0 \ System.XML.dll
  • C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ v3.0 \ System.Xml.dll
  • C:\ Program Files(x86)\ Reference Assemblies \ Microsoft \ Framework \ Silverlight \ v4.0 \ System.Xml.dll

此外,我在GAC框架,框架x64等中有一些程序集......

问题1:

我需要哪种装配?

问题2:(已废弃)

如何确定精确的汇编版本和publicKeyToken?

P.S。有趣的是,当我发布问题时,我发现已经有一个'publickkeytoken'标签,它包含对Question2的回答:)

非常感谢!

2 个答案:

答案 0 :(得分:3)

尝试'gacutil / l',并确保在web.config中输入您真正想要引用的那个,具体取决于目标.NET版本(例如,3.5,4.0等)。 (在代码方面,请确保您可以通过Assembly.Load()加载程序集。)

答案 1 :(得分:1)

如果您使用的是Visual Studio,则可以通过右键单击Project-&gt;来执行此操作。添加参考 - &gt;在.NET选项卡下,您将找到该程序集。

How to add assembly reference via VS

根据项目类型,WebSite或WebApplication VS将向web.config添加条目或将dll添加到bin文件夹。

现在您需要哪一个(2.0 / 3.5 / 4.0)取决于您的应用程序。