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

发布于 2024-12-05 17:52:53 字数 370 浏览 0 评论 0原文

我正在使用一个名为 $(TargetConnectionString) 的变量,

它设置为

SomeValue=Things;数据源=MySQLServer;集成安全性=True;池化=False

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

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

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

I have a variable that I am working with called $(TargetConnectionString)

It is set to

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

Is there a cool MSBuild way to get a reference to just the MySQLServer part of this list?

(I can use a batch file to parse it, but then I have to find a way to read it back in. So I am hoping there is a way to say $(TargetConnectionString."Data Source") (or something similar)

So, how can I get to get the MySQLServer text.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

赢得她心 2024-12-12 17:52:53

通过使用 MsBuild 任务并将 TargetConnection 字符串作为属性集回调到项目文件中,可以执行以下操作。但不适用于空格,所以我删除了它们,希望这对您的

<?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

the following works, by calling back into the project file using an MsBuild task with the TargetConnection string as property set. Does not work with spaces though, so I removed them, hopefully that's usefull for you

<?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>

output:

> 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文