16

Windows Azure SDK を V1.7 から V1.8 にアップグレードしました

私の設定のアップグレード前の部分は

<Site name="Web">
    <VirtualApplication name="MyprojectService"        physicalDirectory="../../Myproject.Hosts.WebHost" />
</Site>

SDKのアップグレード後

次のエラーが発生しています。

エラー 1 仮想パス Web/MyprojectService/ の物理ディレクトリ 'D:\Projects\Myproject\branches\Release_092012\Hosts\Myproject.Hosts.AzureHost\MyprojectAzureHost\Myproject.Hosts.WebHost' が見つかりません。D:\Projects\Myproject\branches\Release_092012\Hosts\Myproject.Hosts.AzureHost\MyprojectAzureHost\bin\Release\ServiceDefinition.csdef 1 1 MyprojectAzureHost

リンクAzure Service.Csdefを通過しました。そして、パスに「../」を追加しました:

<Site name="Web">
    <VirtualApplication name="MyprojectService"        physicalDirectory="../../../Myproject.Hosts.WebHost" />
</Site>

しかし、パッケージを作成すると自動的に削除され、上記のエラーが何度も発生します。

また、完全なパス「D:/Projects/../Myproject.Hosts.WebHost」を入れてみましたが、ロックはありません。

SDK 1.7 では完全に機能していました。ただし、SDK 1.8 では動作しません

4

2 に答える 2

17

以下に、2 つの最新の Windows Azure SDK 間の変更点を (同じサンプル アプリを使用して) 説明しようと思いますので、それぞれのケースとエラー メッセージに示されているパスを参照してください。

以前の SDK では、仮想ディレクトリ ソースはプロジェクトのルートでデフォルトに設定されていましたが、最新の SDK では、仮想ディレクトリ ソースはプロジェクトの出力ディレクトリに設定されています。これは、以下のケース #1 で確認できます。

ケース 1: (失敗)

<VirtualApplication name="MyWeb" physicalDirectory="MvcWebRole1">

Error: Cannot find the physical directory 
    'C:\Users\avkashc\Documents\Visual Studio 2012\Projects\WindowsAzure2012\WindowsAzure2012\bin\Release\MvcWebRole1' for virtual path Web/MyWeb/.

ケース 2: (失敗)

 <VirtualApplication name="MyWeb"  physicalDirectory="..\MvcWebRole1">

 Error: Cannot find the physical directory 'C:\Users\avkashc\Documents\Visual Studio 2012\Projects\WindowsAzure2012\WindowsAzure2012\bin\MvcWebRole1' for virtual path Web/MyWeb/.

ケース 3: (失敗)

 <VirtualApplication name="MyWeb"  physicalDirectory="..\..\MvcWebRole1">

 Error: Cannot find the physical directory 'C:\Users\avkashc\Documents\Visual Studio 2012\Projects\WindowsAzure2012\WindowsAzure2012\MvcWebRole1' for virtual path Web/MyWeb/.

ケース 4: (成功)

 <VirtualApplication name="MyWeb"
                     physicalDirectory="..\..\..\MvcWebRole1">

上記のケース 4 のフォルダー設定は、実際の MvcWebRole1 フォルダー構造 (以下を参照) と一致するため、「......\」設定が「PhysicalDirectory」設定で機能するのはそのためです。

ソースとして release* からフォルダー構造をたどってから、それが存在するすべての場所に戻って追跡し、完全なパスを組み立てる必要があります。

ここに画像の説明を入力

于 2012-11-16T20:11:15.213 に答える
3

sudhAnsu63さん、ご迷惑をおかけしました。

csdef に相対パスがあるプロジェクトを (この場合のように) 1.8 SDK にアップグレードすると、相対パスの変更に関する以下の警告がアップグレード ログに表示されます。この特定の変更は、並列ビルドをより適切にサポートするために行われました。

Site 要素の physicalDirectory 属性には、相対パスが含まれています。このパスは、パッケージ化されたときにターゲット サービス定義ファイルが存在するディレクトリからの相対パスです。以前のバージョンでは、このファイルはルート プロジェクト ディレクトリ内にありました。このバージョンでは、デフォルトで、このファイルはプロジェクトの出力ディレクトリにあります。対象のサービス定義ファイルの新しい場所を反映するために、相対パスを更新する必要がある場合があります。

于 2012-12-06T23:51:12.417 に答える