找不到嵌入式资源。

12

我有一个Xamarin Forms应用程序,在第一个页面有一个图像控件,它显示一个嵌入式资源。经常情况下,当我运行这个应用程序时,它在启动过程中失败,并显示以下错误:

[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 Studio中重建应用程序并重新运行,然后它就可以工作了。呼!有时候这让人非常疲劳。我希望Xamarin意识到这个愚蠢的错误并会解决它。

6个回答

17

这是一个漏洞。由于某种原因,它的状态是已解决,已修复,但似乎根本没有被修复。至少在mac上的XS版本中如此。

作为一种解决方法,异常被抛出的文件SomeClass.g.cs,只需对该生成文件进行编辑、保存并重新编译即可。比重新构建更快一些。

当然,这意味着每次更改.xaml文件时,您都必须进行两次构建。


2
多年过去了,那个漏洞仍未被修复,而且解决方法仍然有效。谢谢:D - Brandtware
谢谢akevan - Erdogan
在Visual Studio for Mac v8.4.8中仍然存在问题,而这仍然是我唯一有效的解决方案。 - 2Toad
1
现在在VS Mac 8.10.6上仍然可以工作 - 谢谢! - joehanna

11
我使用的解决方法如下:
在主项目的.csproj文件中,我发现所有的.xaml文件都是这样格式化的:
<EmbeddedResource Include="Source\Home\HomeContentView.xaml"> <Generator>MSBuild:UpdateDesignTimeXaml</Generator> </EmbeddedResource>
除了一个文件之外,这个文件出现了额外的一行,看起来像这样:
<LogicalName>MyProject.Home.HomeContentView.xaml</LogicalName>
删除这行就可以解决问题。我还保存了我的文件,清理并重新构建了项目。

在我的端上,我已经删除了UWP项目,但是没有从加载字体族的应用文件中删除相关的平台声明。删除它就可以了。感谢您的提示。 - Shahzad Latif
我的代码缺少了Generator标签。 - Josue Martinez

3

我曾遇到类似的错误,通过在我的xaml文件中更正类名来解决了它。

我的意思是,在我的页面的x:Class属性中更正了它。


3
我也有同样的问题,但它是由x:Class属性值中的一些前导空格触发的。 - MrUpsideDown

0

我正在使用Visual Studio Community 2017 for Mac。我将我的引号字符从双引号(")更改为单引号('),并格式化了我的文件。突然间,每当格式化的ContentPage被初始化时,我就开始收到这个错误。

我回到了:

'Visual Studio Community' -> 'Preferences' -> 'Source Code' -> 'Code Formatting' -> 'XML document' -> 'XML Format' -> Quote char

将引号改回双引号,将我用单引号格式化的文档重新格式化为双引号('编辑'->'格式'->'格式化文档'),现在它又完美地工作了。

这解决了我的问题:

'Xamarin.Forms.Xaml.XamlParseException has been thrown'
'No embeddedresource found for YourNamespace.YourContentPageName'

希望能对你有所帮助!


0
另一个选项是检查该项是否在Remove列表中的ItemGroup中,该ItemGroup可能在过去被排除在外:

0

在升级到Visual Studio 2017和最新版本的Xamarin后,无论我尝试什么,都会发生这种情况。这是正确的类名。XAML中没有任何更改,这使得被踢出iOS构建和Android构建并出现嵌入式资源未找到错误。唯一的解决方案是将您的XAML和代码后台保存在记事本中,然后永久删除该类。向您的Xamarin.Forms可移植项目添加一个新的ContentPage,并将其命名为不同的名称。将您的代码粘贴回去并保存。更新您的项目以查找该新ContentPage名称。然后它将再次为您工作。


我也不得不做同样的事情,或多或少。很糟糕。 - John

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接