Как использовать пользовательские разделы в app.config из шаблона t4 - PullRequest
3 голосов
/ 25 января 2011

Я пытаюсь получить доступ к пользовательскому разделу в файле app.config из шаблона t4 в VS2010, но сборка, определяющая пользовательский раздел, не может быть загружена.

Я использую ConfigurationAccessor для полученияsection (ref http://skysanders.net/subtext/archive/2010/01/23/accessing-app.configweb.config-from-t4-template.aspx).

app.config:

<configSections>
    <section name="MyProviders" type="System.Web.Security.MySection, MyAssembly" />
</configSections>

<MyProviders default="SQLMyProvider">
  <providers>
    <add name="SQLMyProvider" ... connectionStringName="MyConnectionString" />
  </providers>
</MyProviders>

Вызов этой строки в файле .tt:

MySection section = (MySection)config.Configuration.GetSection("MyProviders");

Дает эту ошибку:

Выполнение преобразования: System.Configuration.ConfigurationErrorsException: произошла ошибка при создании обработчика раздела конфигурации для MyProviders: не удалось загрузить файл или сборку «MyAssembly» или одну из ее зависимостей. Система не может найти указанный файл.

Файл .tt ссылается на сборку, как и проект, но, похоже, это не помогает загружать раздел конфигурации. Я попытался реализовать класс MySection как блок кода tt, но могу:Этот класс тоже нельзя использовать в app.config.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 25 января 2011

Я думаю <configSections> нужны полные имена сборок (версия, культура, publickeytoken)

type="System.Web.Configuration.SystemWebExtensionsSectionGroup, System.Web.Extensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
0 голосов
/ 25 января 2011

Вам нужно поместить MyAssembly в GAC или просто в папку Visual Studios PublicAssemblies, чтобы он мог найти его.Место для последнего <install_dir>\Common7\IDE\PublicAssemblies.

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