访问MSBuild变量中以分号分隔的项目

时间:2011-09-20 20:04:27

标签: msbuild msbuild-4.0

我有一个名为$(TargetConnectionString)

的变量

设置为

  

SomeValue = Things; Data Source = MySQLServer; Integrated Security = True; Pooling = False

是否有一种很酷的MSBuild方法来获取对此列表中MySQLServer部分的引用?

(我可以使用批处理文件来解析它,但后来我必须找到一种方法来重新读取它。所以我希望有办法说$(TargetConnectionString."Data Source")(或类似的东西)

那么,我怎样才能获得MySQLServer文本。

1 个答案:

答案 0 :(得分:1)

以下工作,通过使用具有TargetConnection字符串作为属性集的MsBuild任务回调到项目文件中。虽然不适用于空格,所以我删除了它们,希望这对你有用

<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">

  <PropertyGroup>
    <TargetConnectionString>DataSource=MySQLServer;IntegratedSecurity=True;Pooling=False</TargetConnectionString>
  </PropertyGroup>

  <Target Name="Main">
    <MSBuild Projects="$(MSBuildProjectFullPath)" Targets="GetDataSource" Properties="$(TargetConnectionString)"/> 
  </Target>

  <Target Name="GetDataSource">
    <Message Text="$(DataSource)"/>
    <Message Text="$(IntegratedSecurity)"/>
    <Message Text="$(Pooling)"/>
  </Target>

</Project>

输出:

> msbuild test.proj /t:Main
...
Project "test.proj" on node 0 (Main target(s)).
Project "test.proj" (1) is building "test.proj" (1:2) on node 0 (GetDataSource target(s)).
  MySQLServer
  True
  False