无法让 MSBuild 社区任务 RegexReplace 工作

2024-02-15

我正在尝试复制一堆名称以前缀开头的文件DR__,但副本必须删除该前缀。那是,DR__foo必须复制为foo。我正在尝试这个,它基于文档(.chm)中提供的示例:

<Target Name="CopyAuxiliaryFiles">
    <MakeDir Directories="$(TargetDir)Parameters" Condition="!Exists('$(TargetDir)Parameters')" />
    <ItemGroup>
      <ContextVisionParameterFiles Include="$(SolutionDir)CVParameters\DR__*" />
    </ItemGroup>
    <Message Text="Files to copy and rename: @(ContextVisionParameterFiles)"/>
    <RegexReplace Input="@(ContextVisionParametersFiles)" Expression="DR__" Replacement="">
      <Output ItemName ="DestinationFullPath" TaskParameter="Output" />
    </RegexReplace>
    <Message Text="Renamed Files: @(DestinationFullPath)"/>
    <Copy SourceFiles="@(ContextVisionParameterFiles)" DestinationFiles="@(DestinationFullPath)" />
  </Target>

DestinationFullPath出来是空的(或者这就是我在显示它时看到的Message)。因此,Copy失败是因为没有DestinationFiles被指定。这是怎么回事?

Edit:ContextVisionParameterFiles 不为空,它包含以下内容:

D:\SVN.DRA.WorkingCopy\CVParameters\DR__big_bone.alut;D:\SVN.DRA.WorkingCopy\CVParameters\DR__big_medium.gop

它们实际上有 40 个文件,但为了清晰起见我对其进行了修剪


知道了!这似乎是一个愚蠢的错误和一个看似强制的参数的组合。至于第一个,有两个目标,称为CopyAuxiliaryFiles。至于第二个,好像是Count需要参数。

最终的工作版本:

<Target Name="CopyCvParameters">
    <ItemGroup>
      <CvParamFiles Include="$(SolutionDir)CVParameters\DR__*" />
    </ItemGroup>
    <Message Text="Input:&#xA;@(CvParamFiles, '&#xA;')"/>
    <!-- Replaces first occurance of "foo." with empty string-->
    <RegexReplace Input="@(CvParamFiles)" Expression="^.*DR__" Replacement="$(TargetDir)Parameters\" Count="1">
      <Output ItemName ="RenamedCvParamFiles" TaskParameter="Output" />
    </RegexReplace>
    <Message Text="&#xA;Output RenamedCvParamFiles:&#xA;@(RenamedCvParamFiles, '&#xA;')" />
    <Copy SourceFiles="@(CvParamFiles)" DestinationFiles="@(RenamedCvParamFiles)" SkipUnchangedFiles="True" />
  </Target>

请注意:

  • 我重命名了目标来解决名称冲突(为什么 Visual Studio 没有将其检测为错误?)
  • 我用以下内容漂亮地打印了 ItemGroups@(CvParamFiles, '&#xA;')语法,这似乎取代;有换行符
  • 我的正则表达式替换了绝对路径和前缀
  • Count="1"现在传递给 RegexReplace
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

无法让 MSBuild 社区任务 RegexReplace 工作 的相关文章

  • 如何在 MSBuild 中的 Exec 命令中转义引号

    我正在尝试构建一个 MSBuild 脚本 将网络驱动器映射到脚本中的驱动器号 但不幸的是目标文件夹的路径包含嵌入的空格 嵌入的空格导致映射失败 我不知道是否可以转义路径周围的引号 我尝试过双引号 但 MSBuild 不喜欢它 要么是 Win
  • 如何使用 Swift 将文本复制到剪贴板/粘贴板

    我正在寻找一个干净的示例 说明如何将文本复制到 iOS 剪贴板 然后可以在其他应用程序中使用 粘贴 该功能的好处是可以快速复制文本 无需传统文本复制的标准文本突出显示功能 我假设关键课程位于UIPasteboard 但在中找不到相关区域他们
  • 是否有可能将 *.pdb 文件包含到发布版本中以查看错误行号?

    我做了一个项目 所有设置都是默认的 当我在调试模式 构建配置 调试 下运行它并遇到异常时 它转储到我的自定义日志记录机制 其中包含错误行号 但是当我运行发布构建时 记录相同的异常 没有行号 只有方法抛出和记录调用堆栈 是否有可能在发布配置
  • MSVC10 /MP 在项目中跨文件夹构建非多核

    我希望有人指出我们所遇到的错误或解决方法 使用 MP 编译项目时 似乎仅同时编译同一文件夹中的文件 我使用进程资源管理器来滑动命令行并确认行为 项目过滤器似乎对同时编译的内容没有影响 项目结构disk Folder project vcxp
  • 如何为 Visual Studio 命令提示符创建批处理文件

    我想创建一个批处理文件Visual Studio 2008 x64 Cross Tools Command Prompt要在我的电脑上连续执行某些操作 场景如下 svn update delete some files MSBuild My
  • 如何通过 msbuild / msdeploy 部署 .net core rc2 项目?

    目前 我们通过调用来部署您的 Web 应用程序项目 csproj MSBuild exe与DeployOnBuild true and PublishProfile Whatever将我们的项目部署到以下之一的参数 本地 IIS Azure
  • 本地 git 存储库强制从远程 git 存储库更新。 (胖客户端部署)

    Update 我认为这与 Windows git 客户端 msysgit 的问题有关 抱歉打扰你们了 我正在寻找一种方法来使多个客户端框与远程 git 存储库保持同步 强制从远程存储库进行更新并放弃客户端上可能已更改的任何内容 我遇到的问题
  • 如果在解决方案中使用项目依赖项,MSBuild 不会复制引用(DLL 文件)

    我的 Visual Studio 解决方案中有四个项目 每个项目都针对 NET 3 5 对于我的问题 只有这两个项目很重要 我的基地项目 我的网络项目1 我添加了 elmah dll 引用我的基地项目在 Visual Studio 2008
  • 如何使用字符对象使用 dplyr 重命名列[重复]

    这个问题在这里已经有答案了 我想通过使用变量以动态方式使用 dplyr 重命名列 但是 它只是为列命名变量的名称 而不是其内容 有任何想法吗 colnames y 1 time channel 1 channel 2 channel 3 c
  • 使用 MSBuild Web 部署到服务器

    我在 VS 2012 项目中设置了发布配置文件 当我在 VS 中右键单击该项目 选择 发布 并单击 发布 按钮时 它会使用 发布配置文件 中提供的设置将项目发布到服务器 当我使用 msbuild 和命令行时 使用以下语法 msbuild e
  • -[MyClassName copyWithZone:] 无法识别的选择器发送到实例

    我的应用程序崩溃了 原因是 MyClassName copyWithZone 无法识别的选择器发送到实例 我有两节课 假设 Class1 和 Class2 Class1 看起来像 Class1 h interface Class1 NSOb
  • 如何将 FTP 网站部署添加到 VS2015/TFS2013 构建过程中

    我已经成功构建运行 现在我想让构建定义将站点发布到我的暂存位置 我尝试使用在 Visual Studio 中正常运行的发布配置文件 但这似乎不适用于 Visual Studio 和 TFS 的这种独特组合 这些是我的 MSBuild 参数
  • npm: ENOENT: 没有这样的文件或目录

    我在用着npm 3 3 6当我尝试安装一堆模块时 出现以下错误 npm i babel cli babel plugin syntax async functions babel plugin transform regenerator b
  • 文件夹结构中的链接文件

    在 Visual Studio 中 当我将文件从一个项目链接到下一个项目时 在尝试加载链接的资源时出现以下错误 仅当链接文件位于文件夹内时才会发生这种情况 Error Message pack application projectName
  • 批处理文件递归复制目录

    有没有办法在 bat 文件中递归复制目录 有这样的例子吗 调查xcopy https learn microsoft com en us windows server administration windows commands xcop
  • Visual Studio Team Services 持续集成:NuGet 恢复任务失败

    我正在使用 Team Services 中的持续集成功能 以前是 Visual Studio Online 我的构建定义针对解决方案 而不是整个解决方案 中的特定项目 即 ClientUI MVC 网站 该解决方案包含三个项目 Client
  • 在构建服务器上安装 F# 4.1 SDK

    我已在 PC 上安装了支持 F 的 Visual Studio 2017 并且 MSBuild 目标位于C Program Files x86 Microsoft Visual Studio 2017 Enterprise MSBuild
  • 筛选 NUnit MSBuild 任务的类别?

    我正在设置一个 MSBuild 项目来运行一些 NUnit 测试 使用MSBuild 社区任务项目 http msbuildtasks tigris org 通过这些设置 我将能够运行 NUnit 测试
  • 以编程方式在java的resources/source文件夹中创建文件?

    我有两个资源文件夹 src 这是我的 java 文件 资源 这是我的资源文件 图像 properties 组织在文件夹 包 中 有没有办法以编程方式在该资源文件夹中添加另一个 properties 文件 我尝试过这样的事情 public s
  • 尝试将 SQLite DB 从数据复制到 SD 卡

    我正在使用以下代码 该代码发布在 Stack Overflow 上的某个位置 并根据我的目的进行了修改 try File sd Environment getExternalStorageDirectory File data Enviro

随机推荐