我有一个xamarin表单应用程序,其中第一页有一个显示嵌入资源的图像控件。通常,当我运行应用程序时,它在启动期间失败并出现以下错误:
[libc] WARNING: generic atexit() called from legacy shared library
[monodroid-gc] GREF GC Threshold: 46800
[MonoDroid] UNHANDLED EXCEPTION:
[MonoDroid] Xamarin.Forms.Xaml.XamlParseException: No embeddedresources found for SeeVee.StartPage
[MonoDroid] at Xamarin.Forms.Xaml.XamlLoader.Load (Xamarin.Forms.BindableObject view, System.Type callingType) [0x00000] in <filename unknown>:0
[MonoDroid] at Xamarin.Forms.Xaml.Extensions.LoadFromXaml[StartPage] (SeeVee.StartPage view, System.Type callingType) [0x00000] in <filename unknown>:0
[MonoDroid] at SeeVee.StartPage.InitializeComponent () [0x00000] in <filename unknown>:0
[MonoDroid] at SeeVee.StartPage..ctor () [0x00000] in <filename unknown>:0
[MonoDroid] at SeeVee.App.GetMainPage () [0x00000] in <filename unknown>:0
[MonoDroid] at SeeVee.Android.MainActivity+<OnCreate>d__0.MoveNext () [0x00000] in <filename unknown>:0
[mono]
[mono] Unhandled Exception:
[mono] Xamarin.Forms.Xaml.XamlParseException: No embeddedresources found for SeeVee.StartPage
[mono] at Xamarin.Forms.Xaml.XamlLoader.Load (Xamarin.Forms.BindableObject view, System.Type callingType) [0x00000] in <filename unknown>:0
[mono] at Xamarin.Forms.Xaml.Extensions.LoadFromXaml[StartPage] (SeeVee.StartPage view, System.Type callingType) [0x00000] in <filename unknown>:0
[mono] at SeeVee.StartPage.InitializeComponent () [0x00000] in <filename unknown>:0
[mono] at SeeVee.StartPage..ctor () [0x00000] in <filename unknown>:0
[mono] at SeeVee.App.GetMainPage () [0x00000] in <filename unknown>:0
[mono] at SeeVee.Android.MainActivity+<OnCreate>d__0.MoveNext () [0x00000] in <filename unknown>:0
[mono-rt] [ERROR] FATAL UNHANDLED EXCEPTION: Xamarin.Forms.Xaml.XamlParseException: No embeddedresources found for SeeVee.StartPage
[mono-rt] at Xamarin.Forms.Xaml.XamlLoader.Load (Xamarin.Forms.BindableObject view, System.Type callingType) [0x00000] in <filename unknown>:0
[mono-rt] at Xamarin.Forms.Xaml.Extensions.LoadFromXaml[StartPage] (SeeVee.StartPage view, System.Type callingType) [0x00000] in <filename unknown>:0
[mono-rt] at SeeVee.StartPage.InitializeComponent () [0x00000] in <filename unknown>:0
[mono-rt] at SeeVee.StartPage..ctor () [0x00000] in <filename unknown>:0
[mono-rt] at SeeVee.App.GetMainPage () [0x00000] in <filename unknown>:0
[mono-rt] at SeeVee.Android.MainActivity+<OnCreate>d__0.MoveNext () [0x00000] in <filename unknown>:0
我必须在xamarin工作室重建应用程序并重新运行它的工作原理。唷!这有时会变得非常累人。我希望xamarin知道这个愚蠢的bug,并会解决它。
对我有用的修复如下
在主项目.csproj
文件中,我发现我所有的.xaml
文件格式如下:
<EmbeddedResource Include="Source\Home\HomeContentView.xaml">
<Generator>MSBuild:UpdateDesignTimeXaml</Generator>
</EmbeddedResource>
除了一个,失败的那个有一条额外的线,看起来像这样
<LogicalName>MyProject.Home.HomeContentView.xaml</LogicalName>
删除此行可修复此问题。我还保存了我的文件,清理并重建了项目。
这是一个bug。由于某种原因,它的状态是RESOLVED FIXED,但它似乎根本不固定。无论如何,在Mac上的XS上。
作为一种解决方法,抛出异常的文件SomeClass.g.cs只是对该生成的文件进行编辑,保存并再次构建。比重建一切要快一点。
当然这意味着每次更改.xaml文件时,都必须构建两次。
我有一个类似的错误,并通过更正我的xaml文件中的类名来修复它。我的意思是在我的页面的x:Class属性中。
我正在使用Visual Studio Community 2017 for Mac。我将引号char从双引号(“)更改为单引号(')并格式化我的文件。突然间,只要格式化的ContentPage
初始化,我就开始出现此错误。
我回到了:
'Visual Studio Community' -> 'Preferences' -> 'Source Code' -> 'Code Formatting' -> 'XML document' -> 'XML Format' -> Quote char
将它改回双引号,将我用单引号格式化的文档格式化为双引号('Edit'->'Format'->'Format Document'
),现在它再次完美运行。
这解决了我的问题:
'Xamarin.Forms.Xaml.XamlParseException has been thrown'
'No embeddedresource found for YourNamespace.YourContentPageName'
希望能帮助到你!
升级到视觉工作室2017和最新版本的Xamarin后,无论我尝试什么,这都发生在我身上。这是正确的班级名称。在XAML中没有任何改变,这是有意义的,并继续踢出ios构建和Android构建与嵌入资源未找到错误。唯一的解决方案是将您的xaml和代码保存在记事本中,然后从项目中永久删除该类。将新的ContentPage添加到您的Xamarin.Forms可移植项目中,并将其命名为不同的名称。将代码粘贴回并保存。更新项目以查找新的ContentPage名称。然后它会再次为你工作。
另一个选项是检查项目是否在ItemGroup中的Remove列表中,该列表可能在过去被排除: