2017-10-23 1 views
1

unzip msbuild 작업을 사용하여 Nuget 패키지에서 파일을 추출합니다. 일부 DLL은 이름 (예 : "Product Name.dll") 사이에 공백이 있습니다. 파일 압축이 풀린 후 공간은 "% 20"으로 바뀝니다.MSBuild에서 Unzip 작업을 사용하여 바이너리 추출

공간을 ASCII "% 20"으로 바꾸지 않도록 MSBuild 압축 풀기 작업에서 설정할 수있는 속성이 있습니까?

그렇지 않으면, 나는 두 가지 옵션을 생각할 수 있습니다

1) 사람은 "% 20"을했고 공백으로 대신 해당 파일의 이름을 변경 디렉토리 발견에있는 파일을 통해 반복. msbuild에 복사 작업이 있다는 것을 알고 있지만 파일을 반복하는 방법을 잘 모릅니다.

2) 문자열에서 이름을 "% 20"으로 바꾸고 공백으로 바꾸십시오. 파일 이름을 어떻게 검색합니까?

도움을 주시면 감사하겠습니다.

UPDATE는 내가 FileUpdate 작업을 발견하고 다음 코드를 사용하여 시도 :

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

그러나,이 공간 텍스트 "% 20"대체하지 않습니다. 나는 Regex 속성을 올바르게 사용하지 않았기 때문에 그것이 확실하다.

누군가 정규식이 동일해야하는 것을 설명해 주시겠습니까?

+0

'%'를 다시 벗어나려고 할 수 있습니까? =>'% 2520' –

+0

작동하지 않았습니다. 정규식을 "% 20"에서 "% 2520"으로 바꿨고 파일 이름의 "% 20"을 공백으로 대체하지 않았습니다. – rds80

답변

0

아니요 아니요. 너겟 패키지를 직접 압축 해제하여 휠을 재발 명하지 마십시오. 커맨드 라인에서 Nuget.exe가 이미 당신을 위해 그것을하고, 그것을 정확하게 역시한다! Nuget 복원 찾기 :

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

, 패키지를 아래로 당겨 적절한 장소에 넣어, 등 그들에게 압축을 해제합니다 복원 ...

그런 다음 당신의 진짜 임무는 그들과 함께 아무것도 할 수 있어야합니다. 그러면 MSBuild가 어셈블리와 함께 빌드 출력 폴더에 자동으로 복사합니다.

+0

nuget.exe 설치를 시도하고 dll 파일의 압축을 풀 때 하위 폴더를 만들었습니다. 자세한 내용은 여기를 참조하십시오. https://stackoverflow.com/questions/46814805/nuget-install-creating-subfolders/46822151#46822151 – rds80

+0

물론 하위 폴더가 만들어집니다. 그러나 너겟 자체가 당신을위한 길을 연결합니다. 직접 작성 경로를 작성할 필요는 없습니다. Nuget 파일은 그냥 작동하도록되어 있습니다. 의존성을 추가 한 다음 잊어 버리십시오. –