2016-03-31 25 views
0

私は多くのプロジェクトで大きなソリューションファイルを持っています。 3つのAzure Webロールプロジェクトが含まれています。 エラーCloudServices077:error CloudServices077:ロールの仮想パス 'Web /'の物理ディレクトリを指定する必要があります

<MSBuild 
    Projects="$(ProductRoot)\Product.sln" 
    Properties="Configuration=$(BuildConfiguration);OutputPath=$(OutputPath)\Product;OutDir=$(OutputPath)\Product\;TargetProfile=$(TargetProfile);CloudExtensionsDir=$(CloudExtensionsDir);ServiceHostingSDKInstallDir=$(ServiceHostingSDKInstallDir);AzureClientLibInstallDir=$(AzureClientLibInstallDir);GenerateProjectSpecificOutputFolder=true" 
    Targets="Build;Publish"/> 

しかし、私たちのAzureプロジェクトのために、これはと失敗している:私たちはこのようなソリューション構築するのMSBuildを使用している仮想パスのための物理ディレクトリを指定する必要があります「をウェブ/」役割のウェブサービス。

ソリューションは、このエラーで失敗する理由私は理解していないのVisual Studio 2015

で罰金構築します。クラウドプロジェクトにはそれぞれ1つのサイトしかなく、physicalDirectoryは必要ありません。ここはCSDEFからのものです:

<Sites> 
    <Site name="Web"> 
    <Bindings> 
     <Binding name="Endpoint1" endpointName="WebService" /> 
    </Bindings> 
    </Site> 
</Sites> 

私はphysicalDirectoryに何を置きたいのか分かりません。

私は、ビルドターゲットでソリューションをMSBuildするだけで、クラウドプロジェクト(CCPROJ)ファイルのそれぞれを公開ターゲットでMSBuildすると、正常に動作することがわかりました。しかし、MSBuildで個々のプロジェクトを管理することなく、ソリューション全体を公開する必要があります。

私は、インターネット上で見つけることができました。この問題への唯一の他の参照は、このブログのエントリから来ている: https://blogs.msdn.microsoft.com/tomholl/2011/10/19/updates-to-windows-azure-msbuild-post-for-sdk-1-5/ そして、それは暗黙のうちに、私はPackageForComputeEmulatorを指定することでこの問題を回避することができます示唆しています。まず、私が正しくそれを読んでいるかどうかは分かりませんし、第二に私がいても、ビルドされたCSPKGファイルがPackageForComputeEmulatorが指定されているかどうかでどのように違うのかを理解したいと思います。私。 PackageForComputeEmulatorが設定された運用環境に展開することはまだ可能で安全ですか?

私はこのエラーが発生する理由を知り、解決方法を知っている人がいれば、私はそれを感謝します!以下は

エラーを与えるMSBuildの診断ビルドから吐き出すです:

Target "Build" skipped. Previously built successfully. 
Target "CorePublish" in file "C:\tfs\azure\2.8\Microsoft.WindowsAzure.targets" from project "C:\tfs\Product\WebService.Cloud\WebService.Cloud.ccproj" (target "Publish" depends on it): 
Task "Message" 
    CorePublish: PackageWebRole = True 
Done executing task "Message". 
Task "Message" 
    Publishing starting... 
Done executing task "Message". 
Task "Message" 
    RolePlugins  is 
Done executing task "Message". 
Task "Message" 
    Importedmodules is 
Done executing task "Message". 
Task "Message" 
    Publishing to 'c:\Build\Productapp.publish\' 
Done executing task "Message". 
Task "MakeDir" 
    Creating directory "c:\Build\Productapp.publish\". 
Done executing task "MakeDir". 
Task "Message" 
    TargetServiceDefinition is c:\Build\Product\WebService.Cloud\ServiceDefinition.csdef 
Done executing task "Message". 
Task "Message" 
    TargetServiceConfiguration is c:\Build\Product\WebService.Cloud\ServiceConfiguration.cscfg 
Done executing task "Message". 
Task "Message" 
    Roles is 
Done executing task "Message". 
Using "CSPack" task from assembly "C:\tfs\azure\v2.8\bin\Microsoft.ServiceHosting.Tools.MSBuildTasks.dll". 
Task "CSPack" 
    Searching for imported module RemoteAccess at C:\tfs\azure\v2.8\bin\plugins\RemoteAccess\RemoteAccess.csplugin... 
    Searching for imported module RemoteForwarder at C:\tfs\azure\v2.8\bin\plugins\RemoteForwarder\RemoteForwarder.csplugin... 
C:\tfs\azure\2.8\Microsoft.WindowsAzure.targets(3003,5): warning : CloudServices68 : No TargetFrameworkVersion specified for role WebService. Using .NET framework v4.0 for packaging. [C:\tfs\Product\WebService.Cloud\WebService.Cloud.ccproj] 
c:\Build\Product\WebService.Cloud\ServiceDefinition.csdef : error CloudServices077: Need to specify the physical directory for the virtual path 'Web/' of role WebService. [C:\tfs\Product\WebService.Cloud\WebService.Cloud.ccproj] 
Done executing task "CSPack" -- FAILED. 
Done building target "CorePublish" in project "WebService.Cloud.ccproj" -- FAILED. 
Done Building Project "C:\tfs\Product\WebService.Cloud\WebService.Cloud.ccproj" (Publish target(s)) -- FAILED. 

答えて

0

この記事は、エラーのためのソリューションを探している私のような誰か「を指定する必要があるだけの場合には、古いですが、 Microsoft Azure Cloud Serviceに複数のWebサイトを追加しようとしているときに、仮想パスの物理ディレクトリを作成する方法を共有したいと思います。

変更が必要なファイルは1つだけです。つまり、ServiceDefinition.csdefです。

開始する前に、自動的に生成されたServiceDefinition.csdefのバージョンで編集していないことを確認してください。この間違いは別の投稿で共有されます:https://stackoverflow.com/a/17554795/1177328

以下のコードはServiceDefinition.csdefの下にあります。これにより

<Sites> 
    <Site name="Web"> 
    <VirtualApplication name="admin" physicalDirectory="..\..\..\Admin" /> 
    <Bindings> 
     <Binding name="Endpoint" endpointName="EndpointHttp" /> 
    </Bindings> 
    </Site> 
</Sites> 

、私は違っアクセスできるように管理フォルダ内のウェブサイトを持っています。たとえば、プライマリウェブサイトがhttp://www.mywebsite.comの場合、アドワーズ仮想ウェブアプリケーションはhttp://www.mywebsite.com/adminにアクセスします。

詳しくはhttps://cuteprogramming.wordpress.com/2015/08/25/azure-cloud-service-say-hi-to-paasをご覧ください。私は、同じWebロールに1つのより多くの新しいウェブサイトを追加したい場合は


はだから今、私は次のように1つの以上<Site>要素を追加する必要があります。ここ

<Site name="2ndWeb" physicalDirectory="..\..\..\2ndWeb"> 
    <Bindings> 
     <Binding name="NewWebsiteEndpoint1" 
      endpointName="Endpoint1" hostHeader="www.mywebsite.com" /> 
    </Bindings> 
</Site> 

よくある間違いはその後「仮想パスのための物理ディレクトリを指定する必要があり、」上記のエラーがスローされます<Site>要素、のためphysicalDirectoryを追加し忘れることです。

同じWebロールで3つ以上のWebサイトを追加する方法の詳細については、http://www.wadewegner.com/2011/02/running-multiple-websites-in-a-windows-azure-web-roleを参照してください。

上記のアジェンダムの質問にお答えするには、にphysicalDirectory属性を追加してみてください。それが役に立てば幸い!

関連する問題