Как ссылаться на сборку из web.config?

Мне нужно добавить ссылку на сборку System.XML.dll в web.config (чтобы попробовать решение проблемы, упомянутой здесь: Проблема с методом расширения: IXmlLineInfo).

Попытался добавить в раздел "сборки" такую ​​строчку:

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

Это вызвало ошибку:

Описание: произошла ошибка при обработке файла конфигурации, необходимого для обслуживания этого запроса. Просмотрите приведенные ниже сведения о конкретных ошибках и соответствующим образом измените файл конфигурации.

Сообщение об ошибке парсера: не удалось загрузить файл или сборку System.Xml, Version = 2.0.5.0, Culture = нейтральный, PublicKeyToken = 7cec85d7bea7798e или одну из его зависимостей. Определение манифеста обнаруженной сборки не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Если честно, я не уверен, правильно ли указаны version / 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 в Framework, Framework x64 и т. Д.

Вопрос1:

Какая сборка мне нужна?

Вопрос2: (устарело)

Как определить точную версию сборки и publicKeyToken?

P.S. Забавные вещи, когда я разместил вопрос, я обнаружил, что уже есть тег publickkeytoken, и он содержит ответ на вопрос 2 :)

Большое спасибо!


person Budda    schedule 13.01.2011    source источник
comment
Вы можете легко определить полную подпись для сборки .NET, загрузив ее в .NET Reflector. В качестве альтернативы вы можете получить только токен открытого ключа, вызвав sn -T <assembly> из командной строки Visual Studio.   -  person Nathan Taylor    schedule 13.01.2011


Ответы (2)


Если вы используете Visual Studio, вы можете сделать это, щелкнув правой кнопкой мыши свой проект-> Добавить ссылку-> На вкладке .NET вы найдете эту сборку.

Как добавить ссылку на сборку через VS.

В зависимости от типа проекта, то есть WebSite или WebApplication VS либо добавит запись в web.config, либо добавит dll в вашу папку bin.

Теперь, какой из них вам нужен (2.0 / 3.5 / 4.0), зависит от вашего приложения.

person gbs    schedule 13.01.2011

Попробуйте 'gacutil / l' и убедитесь, что вы добавили в свой web.config тот, на который действительно хотите сослаться, в зависимости от целевой версии .NET (например, 3.5, 4.0 и т. Д.). (Говоря языком кода, убедитесь, что вы можете загрузить сборку через Assembly.Load ().)

person Ariel    schedule 13.01.2011
comment
Да это работа. вы должны запустить команду из командной строки разработчика. Это не внутри Visual Studio, вы должны перейти в меню Windows, перейти в Visual Studio и открыть инструмент Visual Studio, внутри находится командная строка разработчика. - person freedeveloper; 21.03.2016