Android / Xamarin / C #: идентификатор ресурса больше не является постоянным - PullRequest
0 голосов
/ 22 сентября 2018

Раньше я работал над проектом Android / Xamarin для Android 4.4, API Level 19, который содержит действие со следующим кодом:

private void RadioButtonClick(object sender, EventArgs e)
{
    RadioButton rb = (RadioButton)sender;

    switch (rb.Id)  
    {
        case Resource.Id.radioButton1:
        ...

В последний раз, когда я смотрел проект пару месяцевРаньше это работало просто отлично.Теперь я хочу продолжить работу над проектом для Android 8.0, API Level 26, но когда я открыл его в Visual Studio 2017, я получил ошибку компилятора (field)int ResourceId.RadioButton1 A constant value is expected.

Теперь это само по себе не проблема,поскольку я всегда могу использовать if (rb.Id == ...) вместо switch/case, но я хотел бы знать, почему внезапно Resource.Id.radioButton1 больше не распознается как константа, даже если она объявлена ​​как таковая в Resource.Designer.cs:

public const int radioButton1 = 2131165244;

Кто-нибудь еще сталкивался с чем-то подобным?

РЕДАКТИРОВАТЬ: Еще более странным является то, что проект строится без жалоб, но развертывание невозможно из-за указанной ошибки.

РЕДАКТИРОВАТЬ: Кажется, что процесс сборки создает другой файл Resource.Designer.cs, который помещается в папку obj\Debug\designtime.Когда файл существует, исходный код действий ссылается на объявления Id в этом новом файле, а не на исходный Resource.Designer.cs в папке Resources.

Однако, все Ids в новом файле static, а не const (что, конечно, является причиной ошибки компилятора, которая вызвала этот вопрос в первую очередь), и более того, все ониустановить на ноль.

Есть ли специалисты по Android / Xamarin, которые могут объяснить, что здесь происходит?Может ли это быть ошибкой в ​​Visual Studio 2017 / Xamarin?

РЕДАКТИРОВАТЬ: Вот ссылка, проливающая некоторый свет на эту тему: https://forums.xamarin.com/discussion/19369/compiling-resource-ids-static-vs-const

Чего я не понимаю, так это: почему приведенный выше код работает вообще, учитывая, что эта проблемаизвестен с 2014 года?

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