У меня есть библиотека DLL, которая содержит сгенерированный и дополненный Subsonic код для доступа к модели данных. На самом деле, это объединенная DLL этой исходной сборки, самой Subsonic и нескольких других DLL-библиотек, на которые есть ссылки, в одну сборку, называемую «PowershellDataAccess.dll. скрипт, и это тоже не работает.
Затем я пытаюсь использовать объекты и методы в этой сборке. В этом случае я обращаюсь к классу, который использует Subsonic для загрузки группы записей и создает индекс Lucene из этих записей.
Проблема, с которой я сталкиваюсь, заключается в том, что вызов метода Subsonic для извлечения данных из базы данных говорит, что он не может найти строку подключения. Я указываю AppDomain на соответствующий файл конфигурации, который содержит эту строку подключения, по имени.
Вот сценарий.
$ScriptDir = Get-Location
[System.IO.Directory]::SetCurrentDirectory($ScriptDir)
[Reflection.Assembly]::LoadFrom("PowershellDataAccess.dll")
[System.AppDomain]::CurrentDomain.SetData("APP_CONFIG_FILE", "$ScriptDir\App.config")
$indexer = New-Object LuceneIndexingEngine.LuceneIndexGenerator
$indexer.GeneratePageTemplateIndex("PageTemplateIndex");
Я копался в самой Subsonic, и следующая строка в Subsonic - это то, что ищет строку подключения и выдает исключение:
ConfigurationManager.ConnectionStrings[connectionStringName]
Итак, из любопытства я создал сборку с одним классом, который имеет единственное свойство, которое просто запускает эту одну строку для получения имени строки подключения.
Я создал ps1 с именем , который сборка, и поразил это свойство. Этот прототип может найти строку подключения просто отлично.
Кто-нибудь знает, почему часть Subsonic не может видеть строки подключения?