首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MSBuildCommunityTasks FileUpdate $,(和) in ReplacementText

MSBuildCommunityTasks FileUpdate $,(和) in ReplacementText
EN

Stack Overflow用户
提问于 2018-01-25 07:03:00
回答 1查看 523关注 0票数 0

我试图使用SQLite MSBuild任务修复MSBuild项目中的MSBuildCommunityTasks makefile问题。

我需要将确切字符串"$(LTLIBOPTS) $(LTLIBPATHS)“替换为"$(LTLIBOPTS) $(LTLIBPATHS) $(LTLIBPATHS)$(TCLLIBPATHS)”。

我已经找到了一个与我正在寻找的字符串匹配的正则表达式。详情如下。

代码语言:javascript
复制
\$\x28LTLIBOPTS\x29 \$\x28LTLIBPATHS\x29

问题是,我无法弄清楚ReplacementText使用什么神奇的咒语来用所需的文本替换它。我能得到的最接近的是如下。

代码语言:javascript
复制
$$\(LTLIBOPTS\) $$\(LTLIBPATHS\) $$\(TCLLIBPATHS\)

我使用的FileUpdate任务如下所示。

代码语言:javascript
复制
<FileUpdate
  Files="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\Makefile.msc"
  Regex="\$\x28LTLIBOPTS\x29 \$\x28LTLIBPATHS\x29"
  ReplacementText="$$\(LTLIBOPTS\) $$\(LTLIBPATHS\) $$\(TCLLIBPATHS\)" />

这将导致在文件中插入以下内容。

代码语言:javascript
复制
$\(LTLIBOPTS\) $\(LTLIBPATHS\) $\(TCLLIBPATHS\)

有谁能告诉我我需要用什么魔法咒语来使用ReplacementText吗?

谢谢。

另外,是否有一种方法可以在MsBuild中进行文件搜索和替换,而不必处理正则表达式?我讨厌正则表达式。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-25 20:28:25

我差点就有了。问题不在于替换表达式。问题是MsBuild将$(STRING)解释为变量引用。我需要在ReplacementText中使用%24而不是$,如下所示。

代码语言:javascript
复制
<FileUpdate
  Condition="!Exists('$(MSBuildProjectDirectory)\$(SQLITE_DIR)\sqlite_patched')"
  Files="$(MSBuildProjectDirectory)\$(SQLITE_DIR)\Makefile.msc"
  Regex="\$\x28LTLIBOPTS\x29 \$\x28LTLIBPATHS\x29"
  ReplacementText="%24(LTLIBOPTS) %24(LTLIBPATHS) %24(TCLLIBPATHS)" />

顺便说一句,我发现Regex上的.NET Regex测试仪是一个很有价值的资源。它帮助我发现问题根本不在于替换表达式。

当我意识到问题不在替换表达式中时,如何:在MSBuild中转义特殊字符一文帮助我找到了解决问题的方法。

我希望这能帮助其他可能有同样问题的人。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48437310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档