我正在构建一个应用程序,该程序可搜索Genius上的歌曲并获取歌词以显示给用户。我想创建另一个活动,该活动使用与主布局不同的布局来显示那些歌词,因此我创建了一个.cs活动和一个名为lyrics_viwer.axml的.axml布局文件(我知道那里有一个错字)。
我发现,在构建解决方案时不包含行SetContentView(Resource.Id.lyrics_viwer)
时,它不会给出任何错误,但是包含该错误时,则会出现此错误:
The "LinkAssemblies" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load assembly 'SmartLyrics, Version=0.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'SmartLyrics.dll'
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.GetAssembly(String fileName)
at Xamarin.Android.Tasks.LinkAssemblies.Execute(DirectoryAssemblyResolver res)
at Xamarin.Android.Tasks.LinkAssemblies.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() SmartLyrics
即使我构建成功,布局也不会包含在参考资料中。
我正在使用VS2019 16.1.1
我所见到的所有针对此错误的答案都是针对该错误的不同变体,例如The "LinkAssemblies" task failed unexpectedly.
System.NullReferenceException: Object reference not set to an instance of an object.
或The "LinkAssemblies" task failed unexpectedly.
Xamarin.Android.XamarinAndroidException: error XA2006: Reference to metadata item 'System.Void Android.Widget.AbsListView
。
这些的答案似乎是将目标Android版本更改为API 21,但这对我不起作用。我没有找到其他答案,但我也尝试清洁解决方案,然后进行构建。在发生此错误之前,如果在构建时未包含资源,则重新启动VS或我的计算机可以工作,但这一次它什么都不做。
Another StackOverflow answer说将缺少的引用添加到我的项目“引用”中。但就我而言,缺少参考资料似乎是我自己的项目。
LyricsViwerActivity.cs,其中包含用于新布局的SetContentView:
[Activity(Label = "LyricsViwerActivity")]
public class LyricsViwerActivity : Activity
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
SetContentView(Resource.Id.lyrics_viwer);
}
}
当包含SetContentView(Resource.Id.lyrics_viwer);
时,VS会显示一个'Resource.Id' does not contain a definition for 'lyrics_viwer'
错误,这是预料之中的,因为由于任何原因它都没有在Resources中包含布局。
答案 0 :(得分:0)
我认为您要做的就是改变
SetContentView(Resource.Id.lyrics_viwer);
到
SetContentView(Resource.Layout.lyrics_viwer);
因为SetContentView需要布局资源。