Несоответствие версии сборки при выполнении модульного тестирования мобильных служб Azure с PCL и Xamarin.

Добрый день.

Я хочу создать тесты NUnit для моей библиотеки PCL xamarin. Сейчас в компонентах xamarin есть 1.1.0 Azure Mobile Service, а в NuGet — 1.1.1.

Насколько я понимаю, мне нужен MobileServices.Ext для каждой платформы, поэтому мне нужна версия 1.1.0 для Windows. Я прав? Так ли это, где я могу найти его?

Я попытался добавить Microsoft.WindowsAzure.Mobile из хранилища компонентов xamarin (версия 1.1.0 в магазине, версия файла 1.0.0) и Microsoft.WindowsAzure.Mobile.Ext из Nuget (версия 1.1.0).

вот исключение

System.TypeInitializationException : Инициализатор типа "RateIt.Backend.SAL.AzureWorker" выдал исключение. ----> System.IO.FileLoadException : Не удалось загрузить файл или сборку "Microsoft.WindowsAzure.Mobile.Ext, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" либо одну из их зависимостей. Найденное определение манифеста не соответствует ссылке на сборку. (Исключение из HRESULT: 0x80131040)

Проект модульных тестов требует этого: Microsoft.WindowsAzure.Mobile.Ext, Version=1.0.0.0

как советовал @TheESJ, он попытался добавить привязки

<configuration>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="Microsoft.WindowsAzure.Mobile.Ext" publicKeyToken="null" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-1.1.0.0" newVersion="1.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
  </runtime>
</configuration>

Это не помогает. Прямо сейчас я нашел обходной путь: «расширение связанного проекта» со всеми файлами из PCL, связанными с проектом с тестами, поэтому я могу использовать azure из NuGet и не беспокоиться о PCL.


person xakpc    schedule 13.12.2013    source источник
comment
Вам нужно перенаправить на версию, которую вы развертываете с помощью своего модульного теста. Это будет 0.0.0.0-1.1.0.0 › 1.1.0.0.   -  person TheESJ    schedule 14.12.2013


Ответы (2)


Версия 1.1.0 пакета NuGet и компонента Xamarin имели некоторые проблемы при совместном использовании. Начиная с версии 1.1.5 это уже не так, вы должны обнаружить, что они работают вместе без проблем.

Кроме того, версия 1.1.5 пакета NuGet поддерживает целевые объекты Xamarin.iOS и Xamarin.Android, поэтому, если вы используете только Visual Studio, вы можете полностью пропустить этот компонент.

Дополнительные сведения см. в этом руководстве.

person Paul Batum    schedule 27.03.2014

Вы можете предоставить bindingRedirect в app.config для модульного теста, и средство выполнения модульного теста должно учитывать это при загрузке сборки модульного теста. Nuget делает это автоматически для приложений, но не для библиотек классов. Если у вас есть приложение, вы можете скопировать переадресацию привязки оттуда.

person TheESJ    schedule 13.12.2013