我们的代码位于Visual Studio Online TFS存储库中,
我们构建并部署到Azure。我们使用托管构建控制器Build Definition和TfvcContinuousDeploymentTemplate.12.xaml
构建流程模板,配置为部署到我们的Windows Azure部署环境。
在我们将Azure云服务VM从小升级到Standard_D1之前,一切正常。 我们在ServiceDefinition.csdef中对WebRole进行了适当的更改:
<?xml version="1.0" encoding="utf-8"?>
<ServiceDefinition name="PriceCalv3CS" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition" schemaVersion="2014-06.2.4">
<WebRole name="PriceCalv3CS.SPA" vmsize="Standard_D1">
...
</WebRole>
</ServiceDefinition>
如果我们从本地Visual Studio 2013发布和部署,而且不是从Visual Studio Online发布和部署,一切仍然正常。
VSO成功编译解决方案,但在尝试部署时抛出此异常:
Exception Message: Invalid enum value 'Standard_D1' cannot be deserialized into type 'Microsoft.TeamFoundation.Deployment.Workflow.AzureManagement.v1_7.InstanceSize'. Ensure that the necessary enum values are present and are marked with EnumMemberAttribute attribute if the type has DataContractAttribute attribute. (type SerializationException)
Exception Stack Trace: at System.Runtime.Serialization.EnumDataContract.ReadEnumValue(String value, Int32 index, Int32 count)
at System.Runtime.Serialization.EnumDataContract.ReadEnumValue(XmlReaderDelegator reader)
at System.Runtime.Serialization.EnumDataContract.ReadXmlValue(XmlReaderDelegator xmlReader, XmlObjectSerializerReadContext context)
...
似乎VSO无法处理Azure现在支持的新(ish)实例大小名称 我们正在使用Microsoft Azure SDK for .NET (VS 2013) - 2.5.0, 并尝试升级到最新的2.5.1,但这对VSO没有帮助。
我见过这个问题的其他参考文献在social.msdn 那里有bug opened被关闭而没有解决方案。
有similar error的人能够通过删除旧版本来解决此问题, 但这对我不起作用。我尝试创建一个全新的Build Definition,但这也无济于事。
似乎我们需要告诉VSO尊重这些新的实例大小。但是如何?
更多:我认为VSO正在解析ServiceDefinition.csdef,并在vmsize="Standard_D1"
上窒息,但事实并非如此。我将其更改为vmsize="Small"
甚至vmsize="broken"
,错误消息仍然抱怨“枚举值无效'Standard_D1'”。
答案 0 :(得分:0)
如果您之前的实例小于d1,那么您的部署位于不支持D1的数据中心。
如果是这种情况,那么您需要删除当前部署,包括vm和资源组。然后,当您以D1进行新部署时,您的实例将最终进入正确的数据中心。