2017-01-18 7 views
1

私のASP.NET Coreプロジェクト用のpostpublishスクリプトでコマンドを呼び出すとします。このコマンドには空白を含む引数が必要で、"にラップされています。以下は、コマンドラインから手動で実行している場合、これは動作しますが、私は実行します目的のコマンドです:postpublishスクリプトで二重引用符でコマンド引数を使用することはできますか?

project.json

dotnet nswag webapi2swagger /Assembly:./path/to/assembly.dll /Output:./path/to/swagger.json /InfoTitle:"My API Name" /InfoVersion:v1

このコマンドは、JSON文字列に包まれています。文字列に引用符を使用するためには、私は\でそれらをエスケープ:

"dotnet nswag webapi2swagger /Assembly:%publish:OutputPath%/assembly.dll /Output:%publish:OutputPath%/docs/swagger.json /InfoTitle:\"My API\" /InfoVersion:v1"

残念ながら、これは有効なJSON文字列、公開が実際にエスケープ文字を解決するために表示されるポストで実行するコマンドを作成中。その結果、InfoTitleに渡された値は\"Myであり、私が期待するようには"My API"ではありません。

これはバグですか?期待どおりの結果を得るために、何とかpostpublishスクリプトで別々に引用符をエスケープすることは可能ですか?

答えて

1

postPublishでコマンドを実行する必要があったのと同じ問題がありましたが、VS2015内にパブリッシュするときに「実行可能ファイルが見つかりませんでした」というメッセージが表示されました。

最後に、プロジェクトルートにpostPublish.cmdファイルを作成し、project.jsonのpostPublishで実行するように設定して、出力出力フォルダをスクリプトに渡します。

"postpublish": [ 
     "dotnet publish-iis --publish-folder %publish:OutputPath% --framework %publish:FullTargetFramework%", 
     "postPublish.cmd %publish:OutputPath%", 
    ] 
あなたはpostPublish.cmdスクリプト内でより多くの制御を持っていますし、「パス」の、例えば:

:: use %1 to access the temp publish folder: 
rmdir /s /q "%1\wwwroot\Uploads" 

:: The script will be executed at the root of your project. Testing this: 
cd >> test.txt 
type "project.json" >> testing2.txt 
をエスケープする必要はありません

関連する問題