2017-10-23 11 views
1

unzip msbuildタスクを使用して、nugetパッケージからファイルを抽出しています。 DLLの中には、名前の間に空白(「Product Name.dll」)があるものがあります。ファイルが抽出された後、スペースは "%20"に置き換えられます。MSBuildでUnzipタスクを使用してバイナリを抽出する

スペースがASCII "%20"にならないように、Unzip MSBuildタスクで設定できるプロパティはありますか?

そうでなければ、私は2つのオプションを考えることができます:

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

動作しませんでした。 Regexを "%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ファイルはちょうど動作するはずです。依存関係を追加して忘れてしまいます。 –

関連する問題