在构建服务器上使用“发布”目标构建云服务(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”。
在构建服务器上发布时是否需要定义物理路径,或者是否存在可能导致此错误的其他方案?
答案 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
在:
使用MSBuildC:\Program Files (x86)\MSBuild\14.0\Bin\MSBuild.exe
这解决了我的构建问题。然后我使用PowerShell部署到Azure ...