我们正在做一些关于跨应用程序共享 UI 的工作,包括整个 View 和单个控件,所以我们最终得到的结构是(在 Android 上):
Android App
View (Activity + Layout) pulled in from a NuGet package
Control (Layout) pulled in from another NuGet package
因此,应用拉入 View , View 拉入控件。
我们发现的问题是,在控件布局中定义的资源 ID 并未最终出现在应用的 Resource.designer.cs 中,因此当应用运行时,我们会在调用 FindViewByID 时看到崩溃。
有趣的是,我们已经在三个不同的应用程序中实现了上述内容,它在两个应用程序中工作,而不是另一个,所以我认为它在某处的构建配置中有所不同,或者它纯粹是机会,我们不能依赖这种模式有效。
有人见过这个吗?
更新:
仔细观察构建输出后,我实际上可以看到针对缺少的控件生成的警告:
Warning XA0106: Skipping MyControl.Resource.Id.myId. Please check that
your Nuget Package versions are compatible. (XA0106)
最佳答案
我知道的老问题,但万一有人需要它:
我在更新到 Xamarin.Forms v4.1.0.581479 后遇到了非常相似的问题,并按照上面 James Esh 的评论和 JimmyGarrido 的回复在这里获得解决方案:https://forums.xamarin.com/discussion/89661/a-lot-of-warnings-appear-in-a-new-empty-xamarin-forms-xaml-project
在我的案例中,简单的答案是删除 PCLAppConfig Nuget 包。你的项目中可能有其他包是使用旧版本的 Xamarin.Android.Support* 包构建的。不幸的是,我还没有找到一种方法来诊断具体是哪个软件包导致了问题,因此更新、删除并逐个重新测试让我找到了解决方案。
关于xamarin.android - Xamarin Android 资源设计器缺少 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44807227/