如何从自定义MSBuild任务访问BeforeBuild事件上的app.config?

时间:2009-12-09 22:02:05

标签: msbuild app-config msbuild-task

我编写了一个自定义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文件,但我会做它所需要的。

2 个答案:

答案 0 :(得分:1)

  

更感兴趣的是,在MSBuild属性中指定app.config文件

这就是我所做的。工作得很好。

答案 1 :(得分:0)

您是否尝试过ConfigurationManager.OpenExeConfiguration方法?您可能应该从调用它的MSBuild脚本将该路径传递给您的任务。

由于当时正在运行的应用程序是msbuild.exe,因此当您尝试按照通常在应用程序中访问配置元素时,加载的配置为msbuild.exe.config,您将无法获得应用中的值.config文件。