SetContentView引发LinkAssemblies任务失败及资源未生成问题求助
解决Lyrics Viewer应用的编译与资源引用问题
先抓最显眼的核心问题——拼写错误!你看你的Activity类名是LyricsViwerActivity,布局文件叫lyrics_viwer.axml,这里的Viwer应该是Viewer(少了个字母e)。这个拼写不一致直接导致资源无法被正确识别,VS提示Resource.Id找不到lyrics_viwer就是因为这个!
除此之外还有API调用错误,咱们一步步拆解解决:
1. 修正拼写与API调用错误
- 把布局文件名从
lyrics_viwer.axml改成lyrics_viewer.axml - 把Activity类名和注解里的标签统一改成
LyricsViewerActivity - 关键修正:
SetContentView的参数用错了!设置布局应该传Resource.Layout.xxx(布局文件资源),而不是Resource.Id.xxx(布局内控件的ID)。修正后的代码如下:
[Activity(Label = "LyricsViewerActivity")] public class LyricsViewerActivity : Activity { protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); // 这里改成Resource.Layout引用布局文件 SetContentView(Resource.Layout.lyrics_viewer); } }
2. 解决"LinkAssemblies任务意外失败"错误
这个错误通常和资源引用异常、编译缓存或链接器设置有关,结合你的情况做以下操作:
- 彻底清理重建项目:右键项目 → 清理,再右键 → 生成(不要直接点重建,先清理再生成能清空残留的错误缓存)
- 调整链接器行为:打开项目属性 → Android选项 → 链接器,把链接行为改成
Sdk Assemblies Only,避免链接器误删项目自身的程序集文件 - 重新生成资源索引:手动删除项目里的
Resources.designer.cs文件,然后重新生成项目,VS会自动重新生成正确的资源索引文件 - 统一API版本设置:确保项目属性里的目标框架、编译版本、最低版本保持兼容(比如目标API设为21,编译版本也选21或更高的兼容版本)
做完这些操作后,重启VS再重新生成项目,应该就能解决这两个问题了。
内容的提问来源于stack exchange,提问作者androidWG
相关产品推荐
相关产品推荐

