Azure和发布在buildserver上。需要指定虚拟路径的物理目录

时间:2013-09-04 14:19:57

标签: azure teamcity azure-web-roles

在构建服务器上使用“发布”目标构建云服务(Web角色)项目时,我在CSPack步骤中从构建服务器收到一些奇怪的错误。通过Visual Studio 2012发布工作正常,但不在构建服务器上。

Team City报告错误:

[Azure\AzureAPI\AzureAPI.ccproj.teamcity] CorePublish 
[15:58:49][CorePublish] CorePublish: PackageWebRole = True 
[15:58:49][CorePublish] Publishing starting... 
[15:58:49][CorePublish] RolePlugins       is  
[15:58:49][CorePublish] Publishing to 'bin\Release\app.publish\' 
[15:58:49][CorePublish] MakeDir 
[15:58:49][CorePublish] TargetServiceDefinition is bin\Release\ServiceDefinition.csdef [15:58:49][CorePublish] TargetServiceConfiguration is bin\Release\ServiceConfiguration.cscfg 
[15:58:49][CorePublish] Roles is  
[15:58:49][CorePublish] CSPack 
[15:58:49][CSPack] D:\AzureAPI\bin\Release\ServiceDefinition.csdef error CloudServices077: 
Need to specify the physical directory for 
the virtual path 'Web/' of role Application.MyWebApi 

我的ServiceDefinition文件包含网站的这些设置。

<WebRole name="Application.MyWebApi" vmsize="Small">
    <Sites>
      <Site name="Web">        
        <Bindings>
          <Binding name="Endpoint1" endpointName="www" />
        </Bindings>
      </Site>
    </Sites>
...
</WebRole

在构建服务器上,我有“Azure Authoring Tools v2.0”和“Windows Azure Libraries for .NET 2.0”。

在构建服务器上发布时是否需要定义物理路径,或者是否存在可能导致此错误的其他方案?

2 个答案:

答案 0 :(得分:3)

我遇到了同样的问题但是能够通过在构建步骤的“命令行属性”部分添加更多特定属性来修复它。以下添加内容可防止显示错误,并且能够正确生成我的.cspkg文件:

/t:Publish
/p:TargetProfile=Cloud
/p:Configuration=Release
/p:Platform="Any CPU"
/p:PublishDir=bin\Release\app.publish
/p:OutputPath=bin\Release

此外,我将“目标”字段更改为以下内容:publish

根据我的理解,这是将/t:Publish作为命令行属性的重点,但无论如何,错误不再出现在构建中。

答案 1 :(得分:1)

我在与CSPack搏斗时遇到了类似的问题。我最终偶然发现MSDN上的这篇文章标题为:Command-Line Build for Azure

我将MSBuild CMD更改为:

WebAppPaaS\WebAppPaaS.sln /t:Publish /p:TargetProfile=Cloud

在:

使用MSBuild
C:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe

这解决了我的构建问题。然后我使用PowerShell部署到Azure ...