Как добавить условные символы компиляции относительно платформ ОС в проектах .Net Standard - PullRequest
0 голосов
/ 07 мая 2019

Я создал приложения Xamarin.Android и Xamarin.iOS с несколькими общими проектами.

В общем проекте я использую следующий код:

IDataStorage dataStorage = null;

#if __ANDROID__
dataStorage = new DataStorage(Size.SmallData, 10);
#endif

#if __IOS__
dataStorage = new DataStorage(Size.BigData, 20);
#endif

if (dataStorage == null)
 throw new InvalidOperationException("Data storage is not available.");

Всякий раз, когда я запускаю этокод, я получаю исключение (очевидно).

Поэтому я попытался добавить эти символы компиляции в Условные символы компиляции в свойствах проекта, но я понял, что если я добавлю оба символаоба раздела будут скомпилированы.

enter image description here

К сожалению, Список платформ содержит только один элемент: Active (AnyCPU) .

Поэтому я попытался разделить платформы.

Если я пытаюсь создать новую платформу проекта, я могу выбрать только x86 или x64.

enter image description here

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

enter image description here

Я также не могу установить его, так как он не отображается в списке.

enter image description here

Итак, что я делаю не так?

Как я могу использовать условные символы в проекте .Net Standard относительно платформ ОС?

1 Ответ

1 голос
/ 07 мая 2019

Стандартная библиотека .NET не знает во время компиляции, что она будет использоваться Android, iOS или чем-то еще. Вот почему вы не можете использовать условные символы компиляции.

Если вы используете формы Xamarin, вы можете использовать класс Device для принятия решений во время выполнения на основе фактически работающей платформы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...