使用错误的服务配置发布Azure辅助角色

时间:2015-06-04 14:28:25

标签: azure visual-studio-2013 msbuild azure-deployment

我试图让#ce;发布到azure" VS2013中的功能用于我的工作角色云服务项目。

我遇到的问题是,无论我将服务配置设置更改为应用程序,总是使用Local服务配置进行部署

我的.azurePubxml:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
 <PropertyGroup>
    <AzureCredentials>{"ServiceManagementEndpoint":"https:\/\/management.core.windows.net\/","SubscriptionId":"redacted"}</AzureCredentials>
    <AzureDeleteDeploymentOnFailure>False</AzureDeleteDeploymentOnFailure>
    <AzureDeploymentLabel>MyWorkerRole</AzureDeploymentLabel>
    <AzureDeploymentReplacementMethod>AutomaticUpgrade</AzureDeploymentReplacementMethod>
    <AzureSlot>Staging</AzureSlot>
    <AzureEnableRemoteDesktop>True</AzureEnableRemoteDesktop>
    <AzureEnableWebDeploy>False</AzureEnableWebDeploy>
    <AzureFallbackToDeleteAndRecreateIfUpgradeFails>False</AzureFallbackToDeleteAndRecreateIfUpgradeFails>
    <AzureHostedServiceLabel>MyLabel</AzureHostedServiceLabel>
    <AzureHostedServiceName>MyService</AzureHostedServiceName>
    <AzureEnableIntelliTrace>False</AzureEnableIntelliTrace>
    <AzureEnableProfiling>False</AzureEnableProfiling>
    <AzureServiceConfiguration>Staging</AzureServiceConfiguration>
    <AzureSolutionConfiguration>Staging</AzureSolutionConfiguration>
    <AzureStorageAccountLabel>webstorage</AzureStorageAccountLabel>
    <AzureStorageAccountName>webstorage</AzureStorageAccountName>
    <AzureAppendTimestampToDeploymentLabel>True</AzureAppendTimestampToDeploymentLabel>
  </PropertyGroup>
</Project>

如您所见,AzureServiceConfiguration设置为Staging。 如果我查看构建的输出,我可以看到这些行:

Target "ResolveServiceConfiguration" in file "C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v12.0\Windows Azure Tools\2.6\Microsoft.WindowsAzure.targets" from project "path-to.ccproj" (target "CoreResolveServiceModel" depends on it):
3>  Task "Message"
3>      Target Profile: Local
3>  Task "Message"
3>      Service Configurations: ServiceConfiguration.Staging.cscfg;ServiceConfiguration.Production.cscfg;ServiceConfiguration.Local.cscfg
3>  Task "Message"
3>      Looking for a service configuration file named: ServiceConfiguration.Local.cscfg
3>  Task "FindInList"
3>  Task "Message"
3>      Source Service Configuration: ServiceConfiguration.Local.cscfg
3>  Task "Message"
3>      Target Service Configuration: bin\Staging\ServiceConfiguration.cscfg

最终结果是ServiceConfiguration.Local.cscfg在部署中使用而不是ServiceConfiguration.Staging.cscfg

的工作原理是将Service Configuration设置更改为在开发 - >运行/调试下的暂存。 enter image description here

但是这个设置控制了我在本地运行应用程序时使用的配置文件,所以我自然不想搞砸它。

此外,如果我使用Project->Package...选项并选择暂存,我会获得正确的包并生成正确的配置文件。 我也尝试过使用命令行中的msbuild手动建模,效果也很好。

尝试更新到azure sdk 2.6,希望能解决它,但没有区别。

还应该说我在我的网络角色项目中有这个工作。但由于外部原因,我不得不将worker-role分割为自己的云项目。

更新更多信息,我再仔细看看构建日志,发现了这个:

 1>------ Build started: Project: MyProject, Configuration: Debug Any CPU ------
1>Build started 6/5/2015 5:15:03 PM.
1>Building with tools version "12.0".
1>Target "_CheckForInvalidConfigurationAndPlatform" in file "C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets" from project "path_to_project.csproj" (entry point):
1>Task "Error" skipped, due to false condition; ( '$(_InvalidConfigurationError)' == 'true' ) was evaluated as ( '' == 'true' ).
1>Task "Warning" skipped, due to false condition; ( '$(_InvalidConfigurationWarning)' == 'true' ) was evaluated as ( '' == 'true' ).
1>Using "Message" task from assembly "Microsoft.Build.Tasks.v12.0, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a".
1>Task "Message"
1>  Task Parameter:Text=Configuration=Debug
1>  Task Parameter:Importance=Low
1>  Configuration=Debug

所以似乎没有

<AzureServiceConfiguration>Staging</AzureServiceConfiguration>
<AzureSolutionConfiguration>Staging</AzureSolutionConfiguration>
来自.azurePubxml的

实际上被用作构建脚本的输入。

这一切似乎归结为,如果不是从.azurePubxml文件中发布到Azure函数,从哪里拉出参数?

1 个答案:

答案 0 :(得分:0)

从未在VS2013中完全正常工作,但现在我已经升级到VS2015并发布到Azure再次按预期工作。