2

csdef ファイルの WebRole/Contents/Content/SourceDirectory セクションで絶対パスを使用する場合にのみ動作させることができるという、azure ビルドに問題があります。相対パス (「..」を含む) と環境変数 (SET のように! はい) はサポートされていますが、問題は、.csdef ファイルが 2 回「検証」されているように見えるため、非絶対パスを取得して正常にビルドできないことです。 1 回はパッケージ化前にプロジェクト ディレクトリに配置され、もう 1 回は /bin フォルダーに移動された後です。明らかに、2 つの別々の場所から開始した場合、同じコンテンツ ディレクトリに解決できる相対パスはありません。あなたができることは、2 つのビルド ステップ フェーズの 1 つのパスを正しく取得することですが、他のフェーズでは失敗します。

相対パスを使用してプロジェクトをビルドするには、PreValidateServiceModel ターゲットを無効にする必要があります。パッケージ化は機能しているように見えますが、ターゲットをスキップすることで重要なプロセスが見逃されているのではないかと心配しています (明らかなことは別として... サービスファイルは検証されていません!)。つまり、.csdef ファイルは、パッケージを作成するために解析する必要があるという意味で、まだ「検証済み」です。

4

2 に答える 2

1

同様の問題がありました。WebRole スキーマの Source directory 要素に関するドキュメントを確認したところ、ディレクトリ パスでの環境変数の拡張がサポートされていることがわかりました。これにより、次の解決策に至りました。

csdef ファイルを含むプロジェクトのビルド前イベントで、ファイルを UpdaterFiles ディレクトリから Temp ディレクトリの下のディレクトリにコピーします。

IF NOT EXIST %TEMP%\UpdaterFiles MKDIR %TEMP%\UpdaterFiles
XCOPY $(ProjectDir)..\UpdaterFiles\*.* %TEMP%\UpdaterFiles\ /Y

次に、ソースディレクトリは次のようになります。

<SourceDirectory path="%TEMP%\UpdaterFiles" />

上記は魅力のように機能します

于 2013-11-05T08:47:55.387 に答える