7

最近、Azure 用のクラウド サービス パッケージを作成するために、Teamcity で新しいビルド構成をセットアップしました。msbuild でプロジェクトをビルドした後、cspack.exe (Azure SDK 2.2) を呼び出してパッケージを作成しています。

これは私が使用しているコマンドです:

cspack.exe "ServiceDefinition.csdef" 
"/out:%Package.RelativePath%package.cspkg" 
"/role:MyWebRole;%teamcity.build.checkoutDir%\t\%build.number%;bin\MyProject.Web.dll" 
"/sites:MyWebRole;MyWebSite;%teamcity.build.checkoutDir%\t\%build.number%"

これにより、正しいと思われる cspkg が作成されます。このパッケージを Azure ストレージにアップロードし、webrole の更新を実行しました。しかし、しばらくすると、そのスタートアップ タスクの実行中にエラーが表示されます。その後、webrole を再起動するループが発生します。

考えられる原因を探しているときに、元のプロジェクトでは approot のディレクトリの 1 つにスペースが含まれていることに気付きましたが、パッケージでは %20 にエンコードされています。ディレクトリ名を元の名前に変更し、webrole を再度更新すると、問題はなくなりました。

誰かがこの問題に精通しており、これを解決する正しい方向に私を向けることができますか?

4

1 に答える 1

0

%20 はパッケージにのみ入りますが、展開時には入りません。フォルダ名に %20 が含まれているかどうかを確認するために、クラウド サービス ロールに RDP を実行しましたか? どうやら、%20 はパッケージに追加されるだけで、解凍すると削除されます。したがって、再起動に関する問題は別のものである可能性があります。

ちなみに、同じことが、パッケージに入れる必要がある Unicode 文字を含む、すべての非 URI 文字に適用されます。これは、 Open Packaging Conventionsによって課されます。

于 2015-07-15T19:46:57.800 に答える