#.net #assemblies #reference #strongname
#.net #сборки #ссылка #strongname
Вопрос:
У нас есть много сборок, которые раньше были частными сборками, на которые ссылались из bin
папки. Я добавил configSection
в файл App.config, которые ссылаются на сборку из bin
папки.
<configSections>
<section name="Logger" type="Logger.Client.Reader,Logger.Client,Version=2.0.0.0,Culture=neutral,PublicKeyToken=null"/>
</configSections>
Теперь мы решили дать сборкам строгие имена. Мы так и сделали.
Теперь, когда я ссылаюсь на сборку выше configSection
, нужно ли мне указывать все детали, такие как version
и PublicKeyToken
? В настоящее время я не добавил assmblies в GAC, и они все еще находятся в папке bin.
Когда обязательно предоставлять все детали, как показано выше? И когда (и какие) ее можно исключить?
Комментарии:
1. ASP.NET верно? Тогда зачем App.config, когда вы должны использовать Web.config?
2. У меня есть приложение winform. Итак, это app.config. И у меня такая же конфигурация в web.config и для веб-служб.
3. @abatishchev: есть ли у вас ссылка в проекте или нет, не имеет отношения к этому вопросу. Вам нужно указать assemblyname, чтобы подсистема system.configuration могла загрузить / найти ее.
4. конечно, извините, неправильно прочитал. объявление раздела конфигурации, я вижу
5. самый простой способ, который вы можете сделать: попробуйте оба способа — возьмите сборку со строгим именем и укажите ее с помощью и без FQN, и вы увидите. По моему опыту, это сработает, потому что вы можете использовать сборки FCL без FQN, например, просто «System. Конфигурация. Раздел конфигурации, System. Конфигурация»
Ответ №1:
Смотрите статьи MSDN: это и это.
Сборка со строгим именем имеет полное имя, которое включает название сборки, язык интерфейса, открытый ключ и номер версии. Это часто называют отображаемым именем, и для загруженных сборок его можно получить с помощью свойства FullName.
Смотрите Assembly.FullName
.
Комментарии:
1. 1 Это сняло большинство вопросов. В сообщении, на которое вы ссылались, говорится об этом
All assembly references to assemblies that make up the .NET Framework also must contain a fully qualified name of the assembly.
, и я понимаю, что это должно быть верно и для моих собственных сборок со строгим именем. Но знаете ли вы, является ли не-. СЕТЕВЫЕ сборки тоже должны иметь полные имена при ссылке на них из файлов конфигурации, как я показал?