2017-10-23 4 views
1

Ich benutze die entpacken Msbuild-Aufgabe, um Dateien aus einem Nuget-Paket zu extrahieren. Einige der DLLs haben ein Leerzeichen zwischen den Namen (d. H. "Product Name.dll"). Nachdem die Dateien extrahiert wurden, wird der Speicherplatz durch "% 20" ersetzt.Verwenden von Task entpacken in MSBuild, um Binärdateien zu extrahieren

Gibt es eine Eigenschaft, die ich in der Task "Unzip MSBuild" festlegen kann, um zu verhindern, dass die Leerzeichen in den Ascii "% 20" umgewandelt werden?

Ansonsten kann ich von zwei Möglichkeiten denken:

1) im Verzeichnis Feststellung durch die Dateien Looping, die diejenigen, die „% 20“ hatten und diese Dateien stattdessen mit einem Leerzeichen umbenannt. Ich weiß, dass es eine Kopieraufgabe in Msbuild gibt, aber ich war mir nicht sicher, wie man durch die Dateien schlingt.

2) Erledigen Sie eine Zeichenfolge ersetzen Sie die Dateien, die "% 20" in den Namen und ersetzen diese durch ein Leerzeichen. Wie kann ich die Dateinamen jedoch abrufen?

Jede Hilfe wäre willkommen.

UPDATE

fand ich die Aufgabe Fileupdate und versuchte es mit dem folgenden Code:

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

Allerdings ist es nicht, den Text "% 20" mit einem Leerzeichen ersetzen. Ich bin mir ziemlich sicher, weil ich die Regex-Eigenschaft nicht korrekt verwendet habe.

Kann jemand bitte erklären, was der Regex gleich sein sollte?

+0

können Sie versuchen, das '%' wieder zu entgehen? => '% 2520' –

+0

Hat nicht funktioniert. Ich habe die Regex von "% 20" bis "% 2520" ersetzt und die "% 20" im Dateinamen nicht durch ein Leerzeichen ersetzt. – rds80

Antwort

0

Nein nein nein. Erfinden Sie das Rad nicht neu, indem Sie nuget-Pakete selbst entpacken. Nuget.exe von der Kommandozeile macht das schon für Sie, und es tut es auch richtig! Look up Nuget wieder her:

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

Wiederherstellung werden die Pakete nach unten ziehen, legte sie an der richtigen Stelle, entpacken Sie sie etc ...

Dann sollte Ihre eigentliche Aufgabe sein, nichts zu tun mit ihnen. MSBuild wird automatisch (oder sollte) dann sie mit Ihrer Assembly in Ihren Build-Ausgabeordner kopieren.

+0

Ich habe versucht, die nuget.exe installieren und es erstellt Unterordner beim Extrahieren der DLL-Dateien. Sehen Sie hier für mehr: https://stackoverflow.com/questions/46814805/nuet-install-creating-subfolders/46822151#46822151 – rds80

+0

Natürlich erstellt es Unterordner. Aber nuget selbst wird den Weg für dich einhaken. Sie müssen nicht selbst Pfade zu ihnen schreiben. Nuget-Dateien sollen einfach funktionieren. Sie fügen eine Abhängigkeit hinzu und vergessen sie dann. –

Verwandte Themen