Подтвердить что ты не робот

Добавление ссылки на сборку в 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? Они требуются? Что произойдет, если я не знаю ни одного из них, могу ли я просто поместить что-нибудь?

4b9b3361

Ответ 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>