【发布时间】:2015-08-14 20:03:07
【问题描述】:
我有一个云项目,在这样的目录结构中设置了两个 Web 角色:
C:\我的工作\我的项目\ 解决方案.sln \CloudService\CloudService.ccproj \WebRole1\WebRole1.csproj \WebRole2\WebRole2.csproj我的云服务 .csdef 是:
<ServiceDefinition name="CloudService" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2015-04.2.6">
<WebRole name="WebRole1" vmsize="Small">
<Sites>
<Site name="WebRole1"
physicalDirectory="..\..\..\WebRole1\publish\_PublishedWebsites\WebRole1">
<Bindings>
<Binding name="http"
endpointName="http"
hostHeader="WebRole1.cloudapp.net" />
</Bindings>
</Site>
<Site name="WebRole2"
physicalDirectory="..\..\..\WebRole2\publish\_PublishedWebsites\WebRole2">
<Bindings>
<Binding name="http"
endpointName="http"
hostHeader="WebRole2.cloudapp.net" />
</Bindings>
</Site>
</Sites>
-snip-
当我在 VS2015 中打包 CloudService 项目时,该包在构建的 WebRoles 和包内都按预期创建良好。它上传到 Azure,并且两个 WebRoles 都处于活动状态且没有错误。
但是,如果我通过命令行使用 MSBuild 构建:
msbuild /t:corepublish;package /p:visualstudioversion=14.0;targetframeworkversion=4.5;roletargetframework=4.5;config uration=调试我在 CorePublish 期间收到以下错误:
核心发布: CorePublish:PackageWebRole = True 发布开始... 角色插件是 导入的模块是 发布到“Publishapp.publish\” 创建目录“Publishapp.publish\”。 TargetServiceDefinition 是 Publish\ServiceDefinition.csdef TargetServiceConfiguration 是 Publish\ServiceConfiguration.cscfg 角色是 C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v14.0\Windows Azure Tools\2.6\Microsoft.WindowsAzure.targets(3003,5):警告:CloudServices68:没有为角色 WebRole1 指定 TargetFrameworkVersion。使用 .NET framework v4.0 进行打包。 [c:\mywork\myproject\CloudService\CloudService.ccproj] c:\mywork\myproject\CloudService\Publish\ServiceDefinition.csdef : 错误 CloudServices079: 找不到虚拟路径 WebRole1/ 的物理目录 'c:\mywork\WebRole1\publish\_PublishedWebsites\WebRole1'。 [c:\mywork\myproject\CloudService\CloudService.ccproj] 完成构建项目“c:\mywork\myproject\CloudService\CloudService.ccproj”(发布目标)——失败。 完成构建项目“c:\mywork\myproject\Solution.sln”(重建;发布目标)——失败。 完成构建项目“c:\mywork\myproject\cloudservice\cloudservice.ccproj”(corepublish;包目标)——失败。如您所见,MSBuild 正在这里寻找 WebRole1:c:\mywork\WebRole1,而它应该在这里寻找:c:\mywork\myproject\WebRole1。
那么为什么打包云服务在 VS2015 中工作,而不是在 MSBuild 中?
【问题讨论】:
标签: c# visual-studio azure msbuild visual-studio-2015