8

在构建服务器上使用发布目标构建云服务(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”。

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

4

2 回答 2

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作为命令行属性的意义,但无论如何,错误不再出现在构建中。

于 2015-11-17T22:33:22.400 回答
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 ......

于 2015-09-24T15:07:17.150 回答