3

非常に単純なシナリオ、ASP.NET MVC4 Web サイトがあります。VS2012 の発行機能を使用して、Web デプロイ パッケージを生成します。これにより、1 つの .zip ファイル、いくつかの .xml ファイル、および xxx.deploy.cmd ファイルの一連のファイルが生成されます。

次のコマンドを使用して、いつものように deploy.cmd ファイルを実行します。

MVCTestApp.deploy.cmd /Y -enableRule:DoNotDeleteRule

スペースを含むプログラム ファイルのサブフォルダー (たとえば、C:\Program Files (x86)\Folder With Spaces\TestApp) から実行すると、このコマンドはエラーで失敗します。

\Folder は現時点では予想外でした。

問題は明らかに _DeploySetParametersFile パラメーターの処理にありますが、.cmd ファイルはパブリッシュごとに生成されるため、修正することはできません。

これに対する回避策はありますか?

4

2 に答える 2

3

私にとって、問題は以下のリンクに関連していました(これをジェンキンで機能させようとしていました):

https://issues.jenkins-ci.org/browse/JENKINS-11992?focusedCommentId=201790#comment-201790

ディレクトリの短縮バージョンを使用して、この問題を回避しました。dir /x と入力すると、それらが何であるかを確認できます。

私のビルドコマンドは次のようになりました:

MSBuild c:\PROGRA~2\Jenkins\jobs\REPVIE~1\workspace\Builder\RepView\RepView.csproj /p:DeployOnBuild=true /p:PublishProfile=JenkinsDeployment

私の展開コマンドは次のようになりました。

c:\PROGRA~2\Jenkins\jobs\REPVIE~1\workspace\Builder\RepView\obj\Debug\Package\RepView.deploy.cmd /y /M:http://<target-address> /u:<username> /p:<password>

deploy.cmd ファイルが生成されるため、MSBuild の呼び出し時にディレクトリの短縮名を使用すると、この問題を回避できます。スペースを含むパスを使用しないでください。うまくいくはずです。

于 2014-05-23T16:59:10.920 に答える
1

それが問題の原因である場合は、.cmd を呼び出す前に _DeploySetParametersFile パラメーターの値を設定する必要がある場合があります。これを行うために使用する別の静的バッチ ファイルを作成します。

まず、エスケープされたスペースを使用してパラメーターの値を設定し、その場所から cmd を呼び出します。アプリケーションを展開する必要があるたびに、このバッチ ファイルを使用します。完全な内容:

@if %_echo%!==! echo off
setlocal
set _DeploySetParametersFile=C:\Program^ Files^ (x86)\Folder^ With^ Spaces\TestApp\xxx.SetParameters.xml
"C:\Program Files (x86)\Folder With Spaces\TestApp\xxx.Deploy.cmd"

ファイルを次のようmydeploy.cmdに呼び出し、コマンドラインから呼び出して、ウィンドウをすぐに閉じるのではなく、エラーで応答できるようにします。

于 2013-07-05T09:09:39.797 に答える