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

C# 在MSBuild中使用解压任务提取二进制文件,c#,regex,msbuild,unzip,msbuild-task,C#,Regex,Msbuild,Unzip,Msbuild Task,我正在使用解压msbuild任务从nuget包中提取文件。一些dll在名称之间有一个空格(即“Product Name.dll”)。提取文件后,空间将替换为“%20” 我是否可以在解压MSBuild任务中设置属性以防止空格变成ascii“%20” 否则,我可以想出两个选择: 1) 循环遍历目录中的文件,查找哪些文件具有“%20”,并用空格重命名这些文件。我知道msbuild中有一个复制任务,但我不确定如何循环遍历这些文件 2) 对名称中包含“%20”的文件执行字符串替换,并将其替换为空格。但是如

我正在使用解压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>

但是,它不会将文本“%20”替换为空格。我很确定这是因为我没有正确使用Regex属性


有人能解释一下正则表达式应该等于什么吗?

不,不,不,不。不要通过自己解开nuget包来重新发明轮子。命令行中的Nuget.exe已经为您完成了这项工作,而且它也正确地完成了这项工作!查找Nuget还原:

还原将下拉包,将它们放在正确的位置,解压等


那么你真正的任务应该是什么也不做。MSBuild将自动(或应该)将它们与程序集一起复制到生成输出文件夹中

不,不。不要通过自己解开nuget软件包来重新发明轮子。命令行中的Nuget.exe已经为您完成了这项工作,而且它也正确地完成了这项工作!查找Nuget还原:

还原将下拉包,将它们放在正确的位置,解压等


那么你真正的任务应该是什么也不做。MSBuild将自动(或应该)将它们与程序集一起复制到生成输出文件夹中

您能再次尝试转义
%
吗?=><代码>%2520无效。我将正则表达式从“%20”替换为“%2520”,但它没有将文件名中的“%20”替换为空格。能否再次尝试转义
%
<代码>%2520无效。我将正则表达式从“%20”替换为“%2520”,但它没有将文件名中的“%20”替换为空格。我尝试了nuget.exe安装,它在提取dll文件时正在创建子文件夹。请参见此处了解更多信息:当然,它会创建子文件夹。但nuget本身将为您连接路径。您不必自己编写它们的路径。Nuget文件应该可以正常工作。您添加了一个依赖项,然后忘记了它。我尝试了nuget.exe安装,它在提取dll文件时正在创建子文件夹。请参见此处了解更多信息:当然,它会创建子文件夹。但nuget本身将为您连接路径。您不必自己编写它们的路径。Nuget文件应该可以正常工作。您添加了一个依赖项,然后忘记了它。