Добавление ссылки на сборку в web.config - PullRequest
26 голосов
/ 26 января 2011

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

Ответы [ 3 ]

8 голосов
/ 11 апреля 2011

Отвечая на ваш первый вопрос:

Здесь есть еще один вопрос с полезным ответом:

В чем разница между элементом сборок web.config и файлом проекта Ссылочный элемент

По сути, это связано с различиями между веб-проектами и не-веб-проектами в Visual Studio (насколько я понимаю).

Ответ на ваш второй вопрос:

Это заняло немало копания, но вот, пожалуйста:

Культура - большинство сборок должно быть культурно-нейтральным (при условии, что это установлено в приложении). Однако если у вас есть сборки, чувствительные к культуре, то здесь вы можете указать культуру сборки.

PublicKeyToken - это открытый ключ из пары открытый / закрытый ключ, который использовался для подписи сборки. Это позволяет .NET убедиться, что загружаемая сборка является правильной.

Более полезная информация здесь:

http://en.wikipedia.org/wiki/.NET_assembly

3 голосов
/ 01 ноября 2016

Каждый, кажется, дает «бегство» с этим ответом. Все просто:

<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>
3 голосов
/ 20 апреля 2012

На старый вопрос уже ответили, но я наткнулся на него и хотел добавить:

Важность токена открытого ключа заключается в том, что он абсолютно необходим для сборки со строгим именем. Фактически, вот как вы получаете PKT: подписывайте сборку (генерируйте ключ строгого имени). И вы не можете сохранить сборку в GAC, не подписав ее.

Так что это больше, чем просто идентификация сборки ... это криптографический способ для .NET проверить подпись сборки и убедиться, что она не была подделана.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...