在MSBuild中使用解压缩任务来提取二进制文件

时间:2017-10-23 14:52:25

标签: c# regex msbuild unzip msbuild-task

我正在使用解压缩的msbuild任务从nuget包中提取文件。一些DLL在名称之间有空格(即" Product Name.dll")。提取文件后,空格将替换为"%20。"

我是否可以在解压缩MSBuild任务中设置一个属性,以防止空格变成ascii"%20"?

否则,我可以想到两个选择:

1)通过目录中的文件循环查找哪些文件具有"%20"并用空格重命名这些文件。我知道msbuild中有一个复制任务,但我不确定如何循环访问这些文件。

2)对包含"%20"的文件执行字符串替换在名称中,用空格代替。我如何检索文件名?

任何帮助都将不胜感激。

更新

我找到了FileUpdate任务,并尝试使用以下代码:

<ItemGroup>
 <SourceFiles Include="C:\test\lib\AQS\*.*" />
</ItemGroup>
<Target Name="RenameFiles">
 <FileUpdate Files="@(SourceFiles)" Regex="%20" ReplacementText=" " />
</Target>

然而,它并没有取代文本&#34;%20&#34;有空间。我很确定这是因为我还没有正确使用Regex属性。

有人可以解释正则表达式应该相同吗?

1 个答案:

答案 0 :(得分:0)

不不不。不要自己解压缩nuget包重新发明轮子。来自命令行的Nuget.exe已经为您完成了这一点,并且它也正确地执行了!查找Nuget恢复:

https://docs.microsoft.com/en-us/nuget/consume-packages/package-restore#command-line-restore

恢复将拉下包裹,将它们放在正确的位置,解压缩等等......

那么你真正的任务应该是不做任何事情。 MSBuild将自动(或应该)将它们与您的程序集一起复制到您的构建输出文件夹。