Xamarin Studio для Mac не создает * .xaml.g.cs для приложения .NET Standard Xamarin Forms iOS

В настоящее время я создаю приложение Xamarin Forms для iOS поверх .NET Standard v1.3. У меня возникает проблема с компиляцией приложения, когда я использую Xamarin Studio на Mac, но он отлично работает в Visual Studio в Windows и на отдельном компьютере, на котором запущена новая предварительная версия Visual Studio для Mac.

В Xamarin Studio для Mac я получаю эту ошибку при компиляции приложения:

App.xaml.cs(25,13): error CS0103: The name `InitializeComponent' does not exist in the current context
Base/BaseView.xaml.cs(11,13): error CS0103: The name `InitializeComponent' does not exist in the current context
View/LoginView.xaml.cs(9,13): error CS0103: The name `InitializeComponent' does not exist in the current context

Это происходит с каждым файлом XAML в решении. Я понимаю, почему - файлы *.xaml.g.cs не создаются. В Visual Studio для Windows и Visual Studio Preview для Mac они помещаются в папку проекта obj/Release, но в Xamarin Studio для Mac они вообще не создаются.

У меня есть другое приложение Xamarin Forms, в котором используется полная платформа .NET Framework, а не .NET Standard. Это приложение отлично компилируется в Xamarin Studio для Mac. Это наводит меня на мысль, что проблема может быть связана со стандартом .NET.

На основном Mac я запускаю Xamarin Studio (6.1.5) с Mono 4.6.2, Xamarin.Android 7.0.2.42, Xamarin.iOS 10.3.1.8. В Windows я запускаю Visual Studio 2015 с обновлением 3 (14.0.25341) с Xamarin 4.2.2.11, Xamarin.Android 7.0.2.42 и Xamarin.iOS 10.3.1.8. На втором Mac я запускаю Visual Studio для Mac Preview 3 (7.0 build 1077) с Xamarin iOS 10.4.0.88.

Я не знаю, помогает ли это вообще, но в Visual Studio для Windows я также получаю эту ошибку в каждом файле XAML (но проект по-прежнему компилируется нормально):

Build action 'EmbeddedResource' is not supported by one or more of the project's targets.

Есть ли причина, по которой в Xamarin Studio для Mac не создаются файлы *.xaml.g.cs - возможно, связанные с использованием .NET Standard?

Если мне нужно переключиться на предварительную версию Visual Studio для Mac, я подумаю об этом, но я бы предпочел не полагаться на предварительную версию инструмента для производственного проекта.


person John    schedule 16.02.2017    source источник
comment
Xamarin не поддерживает .net Core, может вы имеете в виду .net Standard?   -  person Gusman    schedule 17.02.2017
comment
Извиняюсь - поправлю пост. Да, .NET Standard (1.3).   -  person John    schedule 17.02.2017
comment
Спасибо @Gusman - в этом сообщении говорится, что Xamarin Studio 6.0.2 и более поздние версии могут использовать библиотеки .NET Standard, а я использую Xamarin Studio 6.1.5.   -  person John    schedule 17.02.2017
comment
Потребляйте, но не создавайте, если у вас есть какой-либо проект, ориентированный на стандарт .net в решении, тогда он потерпит неудачу. Первая версия, поддерживающая его, - это 6.2, и она находится в стадии бета-тестирования.   -  person Gusman    schedule 17.02.2017
comment
Ах я вижу. Хорошо, в этом есть смысл. Я попробую Xamarin Studio 6.2 на другой тестовой машине и проверю. Спасибо!   -  person John    schedule 17.02.2017
comment
Как вы создали проект .NETStandard? Просто интересно, использует ли он файл project.json или это проект .NET Core.   -  person Matt Ward    schedule 19.02.2017
comment
Проект был создан на машине Windows с VS2015. Да, он использует файл project.json. В настоящее время я пробую Xamarin Studio 6.2, так как это действительно решит проблему.   -  person John    schedule 20.02.2017
comment
@Gusman - переход на Xamarin Studio 6.2 действительно устранил проблему. Спасибо! Не могли бы вы представить это как ответ, и я отмечу его как правильное?   -  person John    schedule 21.02.2017


Ответы (1)


Если у вас есть какой-либо проект .net Standard, включенный в ваше решение, вы должны использовать Xamarin Studio версии 6.2 или выше, иначе произойдет сбой, предыдущие версии позволяют использовать только стандартные библиотеки .net, а не компилировать проекты этого типа.

person Gusman    schedule 22.02.2017
comment
Спасибо. В дополнение к использованию XS 6.2 я также обнаружил, что файл решения, который я компилировал, не должен иметь проекта UWP. С включенным проектом UWP я получал ссылку на объект, не заданную для экземпляра ошибки объекта, при попытке выполнить восстановление пакета NuGet. Это, в свою очередь, означало, что целевые объекты Xamarin Forms не были правильно установлены, а это означало, что файлы * .xaml.g.cs не были созданы. Полное удаление проекта UWP из решения решило эту проблему. Обходной путь также заключался в том, чтобы выполнить два восстановления NuGet, поскольку первое не удалось, а второе - успешно. - person John; 22.02.2017