Неопределенная ссылка intellisense ошибка из Resource.Designer.cs - PullRequest
0 голосов
/ 30 мая 2018

Я сталкиваюсь со специфической ошибкой при разработке на Visual Studio 2017, которую я некоторое время мог игнорировать, но сейчас начинает действительно ошибка меня.

Я называю эту проблему ошибкой , а не ошибкой , поскольку я все еще могу создавать свои проекты в Visual Studio и развертывать их на своем устройстве разработки безошибки или предупреждения из результатов сборки.Это может показаться нормальным, если немного проигнорировать, но со временем это стало проблемой, потому что мой intellisense подчеркивает его красным цветом как ошибку

a

каждый раз, когда я ссылаюсь на атрибуты из Ресурс класс.Как вы можете догадаться, я часто ссылаюсь на этот класс, и редактор Visual Studio в конечном итоге оказывается захламленным этими «ошибками», которые (а) мешают мне находить реальные ошибки в моем коде и (б) раздражают меня без всяких причин ...

Исследование "Ошибка"

  • Как показано на последнем изображении, intellisense подбирает "Неоднозначная ссылка" для каждого атрибута в ресурсе класс.Когда я проверяю свой Resource.Designer.cs файл, я вижу только одну ссылку, но получаю вторую ошибку

b.

  • Itтеперь говорит мне, что «Член с таким именем уже объявлен» .Это заставило меня поверить, что существует второй Resource.Designer.cs файл, но мой обозреватель решений и Windows Explorer показывают только один.

c

Попытки решения

  • Изменено пространство имен с InventoryApp (пространство имен по умолчанию для файла) на InventoryApp.Resources .Это избавило меня от ужасных ошибок, но при сборке проекта оно возвращает пространство имен в файле обратно к его настройкам по умолчанию, и ошибки всплывают снова.Мне также сказал кто-то, кто знает лучше, что это большое нет-нет.
  • Удалил файл Resource.Designer.cs , удалил папки "obj" и "bin" изпроект, очистил и перестроил решение, затем добавил новый файл Resource.Designer.cs обратно в мое решение.Это не помогло решить проблему.
  • Создан совершенно новый проект с нуля.Даже после создания пустого приложения Android из шаблонов Visual Studio ошибка сохраняется.Возникает вопрос: Это проблема с моей установкой Xamarin.Android?

Примечания

  • Ресурс .Designer.cs для файла сборки установлено значение «Компилировать»
  • Файл конфигурации .csproj содержит теги:

    <AndroidResgenFile>Resources\Resource.Designer.cs</AndroidResgenFile>
    <AndroidResgenClass>Resource</AndroidResgenClass>
    <GenerateSerializationAssemblies>Off</GenerateSerializationAssemblies>
    <AndroidUseLatestPlatformSdk>false</AndroidUseLatestPlatformSdk>
    <TargetFrameworkVersion>v7.1</TargetFrameworkVersion>
    <AndroidManifest>Properties\AndroidManifest.xml</AndroidManifest>
    <MonoAndroidResourcePrefix>Resources</MonoAndroidResourcePrefix>
    <MonoAndroidAssetsPrefix>Assets</MonoAndroidAssetsPrefix>
    

1 Ответ

0 голосов
/ 04 июня 2018

6/6/2018 Обновление

Если у вас есть ReSharper, вы, скорее всего, сможете игнорировать мое решение для каждого проекта, описанное ниже, и вместо этого просто установите последнюю версию (в настоящее время ReSharper).2018.1.2).Видимо, основная проблема была вызвана ошибкой в ​​предыдущей версии.Обновление решило проблему для меня.

См. youtrack.jetbrains.com / issue / RSRP-469636 для получения дополнительной информации.

Благодаря @davidbauduin на форумах Xamarin дляэта информация.


Мне кажется, я выяснил основную проблему и нашел жизнеспособное решение.

Решение

Добавитьследующее в разделе <PropertyGroup> в вашем файле .csproj:

<AndroidUseManagedDesignTimeResourceGenerator>False</AndroidUseManagedDesignTimeResourceGenerator>

Причина

В то время как в предыдущих версиях Visual Studio эта функция была отключена по умолчанию,последнее обновление VS2017 (15.7.3) уже включено.Эта функция генерирует второй файл Resources.Designer.cs, который приводит к неоднозначной проблеме ссылок.

Вы можете проверить, наведя указатель мыши на постоянную ресурса с ошибкой Intellisense, щелкнув правой кнопкой мыши и выбрав «Перейти к определению»,и выберите 1-й элемент, который приведет вас к файлу Resource.Designer.cs.Если вы повторите, но выберете 2-й, вы попадете в другой файл Resource.Designer.cs.Один из них указывает на файл obj \ Debug \ designtime \ Resource.Designer.cs.Если для этой функции задано значение False, как описано выше, файл Resource.Designer.cs в пути obj \ Debug \ designtime не будет создан.

Информация о функции AndroidUseManagedDesignTimeResourceGenerator:

https://developer.xamarin.com/releases/android/xamarin.android_8/xamarin.android_8.1/#design-time-builds-managed-resource-parser

https://github.com/dotnet/project-system/blob/master/docs/design-time-builds.md#design-time-builds

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

...