从Powershell脚本中引用的DLL亚音速访问App.Config连接字符串
我有一个DLL,其中包含亚音速生成和扩充的代码,用于访问数据模型。实际上,它是原始程序集的一个合并DLL,亚音速本身和其他几个被引用的DLL合并成一个程序集,称为“PowershellDataAccess.DLL”。但是,应该注意的是,我也尝试过在脚本中单独引用每个程序集,这也不起作用 然后,我尝试使用该程序集中的对象和方法。在本例中,我正在访问一个类,该类使用亚音速加载一组记录,并从这些记录创建Lucene索引 我遇到的问题是,对从数据库检索数据的亚音速方法的调用表明它找不到连接字符串。我将AppDomain指向相应的配置文件,该文件按名称包含该连接字符串 这是剧本从Powershell脚本中引用的DLL亚音速访问App.Config连接字符串,powershell,subsonic,Powershell,Subsonic,我有一个DLL,其中包含亚音速生成和扩充的代码,用于访问数据模型。实际上,它是原始程序集的一个合并DLL,亚音速本身和其他几个被引用的DLL合并成一个程序集,称为“PowershellDataAccess.DLL”。但是,应该注意的是,我也尝试过在脚本中单独引用每个程序集,这也不起作用 然后,我尝试使用该程序集中的对象和方法。在本例中,我正在访问一个类,该类使用亚音速加载一组记录,并从这些记录创建Lucene索引 我遇到的问题是,对从数据库检索数据的亚音速方法的调用表明它找不到连接字符串。我将A
$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");
我深入研究了亚音速本身,亚音速中的以下行是查找连接字符串并引发异常的内容:
ConfigurationManager.ConnectionStrings[connectionStringName]
因此,出于好奇,我创建了一个具有单个类的程序集,该类只有一个属性,该属性只运行这一行来检索连接字符串名称
我创建了一个ps1,它调用该程序集并命中该属性。该原型可以很好地找到连接字符串
有人知道为什么亚音速部分似乎看不到连接字符串吗?您是否已将System.Configuration程序集添加到PowerShell会话中?以下内容适用于我:
PS> gc .\app.config
<?xml version='1.0' encoding='utf-8'?>
<configuration>
<connectionStrings>
<clear />
<add name="Name"
providerName="System.Data.ProviderName"
connectionString="Valid Connection String;" />
</connectionStrings>
</configuration>
PS> [appdomain]::CurrentDomain.SetData("APP_CONFIG_FILE", "$home\app.config")
PS> Add-Type -AssemblyName System.Configuration
PS> [Configuration.ConfigurationManager]::ConnectionStrings['Name']
Name : Name
ConnectionString : Valid Connection String;
...
PS>gc.\app.config
PS>[appdomain]::CurrentDomain.SetData(“APP\u CONFIG\u FILE”,“$home\APP.CONFIG”)
PS>添加类型-AssemblyName系统配置
PS>[Configuration.ConfigurationManager]::连接字符串['Name']
姓名:姓名
ConnectionString:有效的连接字符串;
...
我尝试过其他原型,其中我的代码通过ConfigurationManager跟踪连接字符串。这些都可以。只有当我将控制权交给亚音速代码,亚音速调用ConfigurationManager时,配置似乎消失了。在调用之前,您是否将System.Configuration.dll程序集加载到PowerShell中亚音速生成的代码?如果是,那么您能否列出错误信息,例如$error[0]| fl*-force