SetContentView给出“ LinkAssemblies任务意外失败”的构建错误

时间:2019-06-09 15:59:04

标签: c# android xamarin xamarin.android

我正在构建一个应用程序,该程序可搜索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中包含布局。

1 个答案:

答案 0 :(得分:0)

我认为您要做的就是改变

SetContentView(Resource.Id.lyrics_viwer);

SetContentView(Resource.Layout.lyrics_viwer);

因为SetContentView需要布局资源。