我编写了一个自定义MSBuild任务,用于从MSSQL存储过程生成模型代码。我希望使用相同的配置来完成我的任务,以便像应用程序一样连接到数据库。我创建了一个看起来像这样的配置部分
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="CoreDataConnections" type="CoreData.ConfigHandler, CoreData"></section>
</configSections>
<CoreDataConnections>
<Connection Name="BillingDB" ConnectionString="Data Source=SERVER0;Initial Catalog=DB0;persist security info=False;user id=user;password=password;packet size=4096"/>
<Connection Name="ValidationDB" ConnectionString="data source=SERVER1;initial catalog=DB1;persist security info=False;user id=user;password=password;packet size=4096"/>
</CoreDataConnections>
</configuration>
从我的应用程序中整天访问它,如下所示:
Dictionary<string,string> Connections = (Dictionary<string,string>)ConfigurationSettings.GetConfig("CoreDataConnections");
我的自定义任务无法看到它,GetConfig
会返回null
。
我该怎么办?我不想重写我的自定义配置部分处理程序,并且更感兴趣,比如在MSBuild属性中指定app.config文件,但我会做它所需要的。
答案 0 :(得分:1)
更感兴趣的是,在MSBuild属性中指定app.config文件
这就是我所做的。工作得很好。
答案 1 :(得分:0)
您是否尝试过ConfigurationManager.OpenExeConfiguration方法?您可能应该从调用它的MSBuild脚本将该路径传递给您的任务。
由于当时正在运行的应用程序是msbuild.exe,因此当您尝试按照通常在应用程序中访问配置元素时,加载的配置为msbuild.exe.config,您将无法获得应用中的值.config文件。