2013-06-08 3 views
2

Итак, я использую CloudFX с SDK 2.0 Azure. Все прошло хорошо, когда я запускал свою рабочую роль за пределами среды Azure (ни облака, ни эмулятора) в консольном приложении.Как использовать CloudFX с Azure SDK 2.0?

Когда я пытаюсь на эмуляторе или Cloud, я получил AggregateException с этой информацией:

{"The type initializer for 'Microsoft.Experience.CloudFx.Framework.Diagnostics.TraceManager' threw an exception."} 
Could not load file or assembly 'Microsoft.WindowsAzure.Diagnostics, Version=1.8.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040) 
    at Microsoft.Experience.CloudFx.Framework.Diagnostics.HybridTraceEventProvider..ctor(String providerName, Guid providerGuid) 
    at Microsoft.Experience.CloudFx.Framework.Diagnostics.TraceManager.<>c__DisplayClass1.<Create>b__0(Guid guid) 
    at System.Collections.Concurrent.ConcurrentDictionary`2.GetOrAdd(TKey key, Func`2 valueFactory) 
    at Microsoft.Experience.CloudFx.Framework.Diagnostics.TraceManager.Create(String providerName, Guid providerGuid) 
    at Microsoft.Experience.CloudFx.Framework.Diagnostics.TraceManager..cctor() 

Так что я попытался сделать эту сборку перенаправлять без успеха:

<dependentAssembly> 
     <assemblyIdentity name="Microsoft.WindowsAzure.Diagnostics" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 

Кажется, что CloudFX все еще ограничен/ссылается на SDK 1.8. Может ли кто-нибудь помочь нам с этой проблемой?

Спасибо!

ответ

1

С помощью некоторой помощи MSFT-парня, Валери, я смог исправить эту проблему, дважды проверив мои конфиги, убедившись, что ничто не указывает на версию 1.8.0.0, и у меня есть добавленная конфигурация перенаправления assemblyBinding.

В то время как мы не имеем новую версию релиза CloudFX с поддержкой Azure SDK 2.0, все, что вам нужно сделать, это добавить вручную в конфигурации переадресацию на runtime/assemblyBinding/ разделе:

<dependentAssembly> 
     <assemblyIdentity name="Microsoft.WindowsAzure.Diagnostics" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
    </dependentAssembly> 

и что Azure- специфический прослушиватель трассировки, называемый AzureDiagnostics, явно указывающий на Microsoft.WindowsAzure.Diagnostics version = 2.0.0.0

С его помощью вы сможете использовать CloudFX с Azure SDK 2.0.

+2

Большое вам спасибо! Пользователи VS2013 с текущим Azure SDK 2.2 отмечают, что вы можете использовать следующие переадресации для запуска CloudFX с использованием последних бинарных файлов от NuGet (по состоянию на 9 декабря 2013 г.); обратите внимание, что NuGet _should_ автоматически обновляет их при обновлении пакетов ** (за исключением Diagnostics, так как это не часть пакета) **: 'Microsoft.WindowsAzure.Storage' ->' 3.0.0.0', 'Microsoft.WindowsAzure. Диагностика' -> '2.2.0.0',' Microsoft.ServiceBus' -> '2.2.0.0',' System.Reactive. {Интерфейсы, Linq, Core, PlatformServices} '(нужны все четыре) ->' 2.2.0.0' , 'Microsoft.Data.OData' ->' 5.6.0.0'. –