Добавление ссылки на сборку в web.config
У меня есть некоторые общие вопросы о web.config и как это работает в отношении ссылки на сборку. Я играю с новым движком просмотра Razor, и у меня возникли проблемы с его запуском и запуском.
Моя проблема началась с общего
Тип или имя пространства имен 'XXXXX' не существует в пространстве имен 'XXXXX' (вам не хватает сборки ссылка?)
Теперь я понял, что это просто простая ссылка на проект, и я буду в пути. Но даже после того, как я добавил ссылку на недостающую сборку, мой проект продолжал ломаться.
Я нашел решение, и мне пришлось добавить ссылку на сборку в файле web.config. Как только я это сделал, все сработало нормально.
Сначала, я хочу понять, почему для исправления этой проблемы потребовалось добавить ссылку на web.config. Почему ссылка на проект не была достаточно хорошей?
Второй, когда дело доходит до добавления ссылок в web.config, я хотел бы понять синтаксис. Когда я вижу разметку вроде этого
<add assembly="System.Web.WebPages" />
мне кажется очень понятным, что я добавляю сборку с именем System.Web.WebPages. Но полный синтаксис в моем web.config
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
Версия кажется самоочевидной, но для чего используется культура и PublicKeyToken? Они требуются? Что произойдет, если я не знаю ни одного из них, могу ли я просто поместить что-нибудь?
Ответы
Ответ 1
Отвечая на ваш первый вопрос:
Здесь еще один вопрос с полезным ответом:
В чем разница между элементом ассемблирования web.config и файлом проекта Справочный элемент
По существу, это связано с различиями между веб-проектами и не-веб-проектами в Visual Studio (как я понимаю).
Отвечая на вопрос второй:
Это заняло много места, но здесь вы идете:
Культура. Большинство сборок должны быть нейтральными по отношению к культуре (при условии, что это задано в приложении). Однако, если у вас есть чувствительные к культуре сборки, тогда вы указываете культуру сборки.
PublicKeyToken - это открытый ключ из пары открытых/закрытых ключей, который использовался для подписи сборки. Имея это,.NET позволяет проверить правильность загрузки сборки.
Более полезная информация здесь:
http://en.wikipedia.org/wiki/.NET_assembly
Ответ 2
Старый вопрос, уже ответил, но я наткнулся на него и хотел добавить:
Важность токена открытого ключа заключается в том, что он абсолютно необходим для сильно названной сборки. Фактически, это то, как вы получаете PKT: Подпишите сборку (сгенерируйте ключ с сильным именем). И вы не можете хранить сборку в GAC без его подписания.
Итак, это не просто вопрос идентификации сборки... это криптографический способ .NET для проверки подписи сборки и обеспечения того, чтобы она не была подделана.
Ответ 3
Кажется, что каждый дает "обход" с этим ответом. Это просто:
<configuration>
<system.web>
<compilation debug="true" strict="false" explicit="true" targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Linq, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
</configuration>