Configuration 读取MSBuild任务中的配置值

Configuration 读取MSBuild任务中的配置值,configuration,msbuild,Configuration,Msbuild,是否有方法读取MSBuild任务中的System.Config连接字符串 基本上,我在配置文件中设置了连接字符串 <add name="MyApp.MyConnectionString" connectionString="..." /> 我想在MSBuild任务中引用它,如下所示 <Target Name="Migrate" DependsOnTargets="Build"> ... <Migrate Connectionstring="$(

是否有方法读取MSBuild任务中的System.Config连接字符串

基本上,我在配置文件中设置了连接字符串

<add name="MyApp.MyConnectionString" connectionString="..." />

我想在MSBuild任务中引用它,如下所示

<Target Name="Migrate" DependsOnTargets="Build">
    ...
    <Migrate Connectionstring="$(MyApp.MyConnectionString)" ... />
</Target>

...

中有一个XMLRead任务,它使用xpath提取值

<XmlRead 
  XPath="/add/@connectionString"
  XmlFileName="app.config">
    <Output TaskParameter="Value" PropertyName="MyConnectionString" />
</XmlRead>
<Message Text="MyConnectionString: $(MyConnectionString)"/>


(注意:完全未测试)

这不好,因为它要求我知道我的配置文件是什么。我想阅读设置本身,这样它就可以完全不可知了。用户可以在本地配置文件或machine.config中设置连接字符串。然而,我对MSBuild还是相当陌生的。我是否可以认为这意味着我可以从任务内部填充属性?所以我可以编写一个任务,使用System.Configuration获取配置值并将其放入msbuild属性中?不太清楚您的意思--为什么不知道文件名?您可以使用ItemGroup来搜索文件,然后为XmlFileName属性指定该组,它将在找到的任何文件上运行(我认为在这种情况下可能有不同的方法来指定propertyName,以便它进入一个组而不是单个属性值)。但是可以,您可以填充属性,然后在生成文件的其他位置使用它。我不知道文件名的名称,因为System.configuration正在正确处理配置。用户可以在Machine.config、app.config、app.config包含的某些文件中设置值,这无关紧要。我只知道房子的名字。很抱歉,我没有联系到你说的是一个生活环境。只要您能够在该上下文中以某种方式从msbuild执行,您就应该能够使用System.Configuration并读取该值。例如,您可以将一个小应用程序作为程序的一部分,msbuild可以执行该应用程序,该应用程序输出配置值(或将其写入临时文件)。在构建环境中需要这样做对我来说似乎有点奇怪,但我猜您需要这样做来运行测试或其他什么(我个人可能会使用签入SCM的测试配置文件).是的,我想我最终会用C语言编写我自己的简单任务,它从System.Configuration中提取一个值,并填充一个属性以用于另一个任务。