2011-01-26 2 views
23

У меня есть некоторые общие вопросы о web.config и как это работает в отношении ссылки на сборку. Я играл с новым движком просмотра Razor и имел некоторые проблемы с его запуском и запуском.Добавление ссылки на сборку в web.config

Моя проблема началась с общей

типа или пространства имен имя «XXXXX» не существует в пространстве имен «XXXXX» (вы пропали без вести сборочной ссылку?)

Теперь я понял, что это просто простая ссылка на проект, и я буду в пути. Но даже после того, как я добавил ссылку на недостающую сборку, мой проект продолжал ломаться.

Я нашел решение, и мне пришлось добавить ссылку на сборку в файле web.config. Как только я это сделал, все сработало нормально.

Первый, я хочу понять, почему для исправления этой проблемы потребовалось добавить ссылку на web.config. Почему ссылка на проект не была достаточно хорошей?

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

ответ

7

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

Там другая SO вопрос здесь с полезным ответом:

What is difference between web.config assemblies element and project file Reference element

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

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

Это заняло совсем немного рыть вокруг, но здесь вы идете:

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

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

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

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

3

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

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

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

0

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

<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> 
+0

Этот ответ не отвечает на вопросы OP: для чего используется культура и PublicKeyToken? Они требуются? Что произойдет, если я не знаю ни одного из них, могу ли я просто положить что-нибудь? –

Смежные вопросы