Решение Visual Studio Android перестает работать при столкновении с конфликтом версий C # при использовании MSBuild - PullRequest
0 голосов
/ 14 сентября 2018

Решение прекрасно собирается в Visual Studio 2017.

MSBuild выдаст следующее предупреждение:

C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional\ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets (2106, 5): предупреждение MSB3277: Обнаружены конфликты между различными версиями «Microsoft.CSharp», которые не удалось разрешить.Эти конфликты ссылок перечислены в журнале сборки, когда подробность журнала установлена ​​на подробное значение.

После предупреждения появится строка пар, но оттуда она останавливается и вообще не прогрессирует.

Фактический конфликт ссылок здесь:

Возник конфликт между «Microsoft.CSharp, Version = 2.0.5.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a» и «Microsoft.CSharp, Версия = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a ".(TaskId: 123) 4> «Microsoft.CSharp, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = b03f5f7f11d50a3a» была выбрана, поскольку она была основной, и «Microsoft.CSharp, версия = 4.0.0.0, культура = нейтральная, PublicKeyToken =b03f5f7f11d50a3a "не было.(TaskId: 123) 4> Ссылки, которые зависят от "Microsoft.CSharp, Version = 2.0.5.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a" [C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ Microsoft.CSharp.dll].(TaskId: 123) 4> C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ Microsoft.CSharp.dll (TaskId: 123)4> Элемент файла проекта содержит ссылку, которая вызвала ссылку "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ ReferenceAssemblies \ Microsoft \ Framework \ MonoAndroid \ v1.0 \ Microsoft.CSharp.dll".(TaskId: 123) 4> Microsoft.CSharp (TaskId: 123) 4> Ссылки, которые зависят от "Microsoft.CSharp, Version = 4.0.0.0, Culture = нейтральный, PublicKeyToken = b03f5f7f11d50a3a" [].(TaskId: 123) 4> C: \ Users \ laniganr.nuget \ packages \ newtonsoft.json \ 10.0.3 \ lib \ netstandard1.3 \ Newtonsoft.Json.dll (TaskId: 123)

Несколько других строк появятся сразу после ошибки, но никогда не пройдут дальше этой точки.

Сказанные строки:

_XamarinAndroidBuildAarRestore: Ссылка уже объединена, пропуск пропущен из-за: obj \ ReleaseNuget \ XbdMerge \ Xamarin.GooglePlayServices.Bas ement.dll.stamp В ссылке уже есть ресурсы, пропущенные из-за: obj \ ReleaseNuget \ XbdMerge \ Xamarin.GooglePlayServices.Tas ks.dll.stamp В ссылке уже есть ресурсы, пропуск из-за: obj \ ReleaseNuget \ XbdMerge \ Xamarin.Firebase.Common.dll.st amp Ссылка уже содержит ресурсы, пропущенные из-за: obj \ ReleaseNuget \ XbdMerge \ Xamarin.Firebase.Iid.dll.stamp Ссылка уже естьбыли объединены ресурсы, пропущены из-за: obj \ ReleaseNuget \ XbdMerge \ Xamarin.Firebase.Messaging.dll .stamp _ResolveLibraryProjectImports: Пропуск цели "_ResolveLibraryProjectImports "потому что все выходные файлы являются актуальными по отношению к входным файлам._BuildLibraryImportsCache: Пропуск цели "_BuildLibraryImportsCache", поскольку все выходные файлы обновлены относительно входных файлов.

1 Ответ

0 голосов
/ 17 сентября 2018

Решение Visual Studio Android перестает работать при возникновении конфликта версий C # при использовании MSBuild

Это потому, что имеется явная ссылка на Microsoft.CSharp 2.0.5.0 в проекте Xamarin.Android при наличииссылка на Microsoft.CSharp 4.3.0.0 в проекте библиотеки netstandard из библиотеки newtonsoft.json 10.0.3.

В журнале сборки вы можете найти свой проект, ссылающийся на пакет newtonsoft.json, в следующем сообщении:

C: \ Users \ xxxxx \ packages \ newtonsoft.json \ 10.0.3 \ lib \ netstandard1.3 \ Newtonsoft.Json.dll (TaskId: 123)

Затем проверьте зависимостьпакета newtonsoft.json\10.0.3\lib\netstandard1.3:

enter image description here

Чтобы решить эту проблему, попробуйте обновить Newtonsoft.Json до версии 11.0.1 и выше.Это связано с тем, что данная версия пакета Newtonsoft.Json для netstandard 2.0 не зависит от Microsoft.CSharp.

Кроме того, вы можете удалить Microsoft.CSharp 2.0.5 и разрешить использовать его из Nuget.

Вы можете обратиться к аналогичной теме здесь и здесь для получения дополнительной информации.

Надеюсь, это поможет.

...