我试图使用Xamarin.Android.Support库版本25.3.1,但由于一个错误,我决定降级回我以前的版本23.3.0。降级后我收到以下错误消息。无论我尝试什么,我都无法摆脱它。我试图删除所有bin,obj,tmp等文件夹。重启VS2015,清理,重建......
Severity Code Description Project File Line Suppression State
Error Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly
'Xamarin.Android.Support.Fragment, Version=1.0.0.0, Culture=neutral,
PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'Xamarin.Android.Support.Fragment.dll'
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
at Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(DirectoryAssemblyResolver resolver, ICollection`1 assemblies, AssemblyDefinition assembly, Boolean topLevel)
at Xamarin.Android.Tasks.ResolveAssemblies.Execute(DirectoryAssemblyResolver resolver)
我在package.config文件中发现了一个小小的变化。以下都是 targetFramework =“monoandroid71”现在。在升级降级之前,他们是targetFramework =“monoandroid70”,我将它们替换为manulla,但它根本没有帮助。我该如何解决这个问题?
<package id="Xamarin.Android.ShortcutBadger" version="1.1.809" targetFramework="monoandroid71" />
<package id="Xamarin.Android.Support.Animated.Vector.Drawable" version="23.3.0" targetFramework="monoandroid71" />
<package id="Xamarin.Android.Support.CustomTabs" version="23.3.0" targetFramework="monoandroid71" />
<package id="Xamarin.Android.Support.Design" version="23.3.0" targetFramework="monoandroid71" />
<package id="Xamarin.Android.Support.v4" version="23.3.0" targetFramework="monoandroid71" />
<package id="Xamarin.Android.Support.v7.AppCompat" version="23.3.0" targetFramework="monoandroid71" />
<package id="Xamarin.Android.Support.v7.CardView" version="23.3.0" targetFramework="monoandroid71" />
<package id="Xamarin.Android.Support.v7.MediaRouter" version="23.3.0" targetFramework="monoandroid71" />
<package id="Xamarin.Android.Support.v7.Palette" version="23.3.0" targetFramework="monoandroid71" />
更新: 我已经重新安装了所有的nugetpackages并成功运行了1个pc上的android项目,但有趣的是同一个项目没有在另一台PC上运行。它返回不同但相似的错误。
Severity Code Description Project File Line Suppression State
Error The "ResolveLibraryProjectImports" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load assembly 'myApp, Version=0.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'myApp.dll'
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(String fullName, ReaderParameters parameters)
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(String fullName)
at Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.GetAssembly(String fileName)
at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Extract(DirectoryAssemblyResolver res, ICollection`1 jars, ICollection`1 resolvedResourceDirectories, ICollection`1 resolvedAssetDirectories, ICollection`1 resolvedEnvironments)
at Xamarin.Android.Tasks.ResolveLibraryProjectImports.Execute()
at Microsoft.Build.BackEnd.TaskExecutionHost.Microsoft.Build.BackEnd.ITaskExecutionHost.Execute()
at Microsoft.Build.BackEnd.TaskBuilder.<ExecuteInstantiatedTask>d__26.MoveNext() myApp.Droid
答案 0 :(得分:6)
我的问题是我更新了xamarin表格到2.5.0.121934, 然后,它在加载程序集时显示Error&#34; Exception:System.IO.FileNotFoundException:无法加载程序集 &#39; Xamarin.Android.Support.Fragment,Version = 1.0.0.0,Culture = neutral, 公钥=&#39 ;.也许它在Mono for Android配置文件中不存在?&#34;
所以我将我的xamarin.form降级为2.3.4.247,然后成功构建。
答案 1 :(得分:4)
这里最好的选择是从Xamarin.Android项目中卸载所有Xamarin和Android软件包。然后再次安装Xamarin.Forms,它将添加正确的依赖项。
或者,尝试下载
Install-Package Xamarin.Android.Support.Fragment
答案 2 :(得分:3)
我重命名了标题,因为我有2个以下问题,它们看起来确实相似,而且都只与Android项目相关。
第一个抱怨支持。片段在24.x.x版本之上可用,但我使用的是23.0.x.造成这种情况可能是因为从25.3.1版本降级。无论我尝试什么,清洁垃圾桶,对象,温度,重建都没有帮助。我使用命令Update-Package –reinstall
在解决方案中重新安装所有NuGet包。这有助于我的一台电脑。但是在我的另一台电脑上,我在问题中得到了第二个错误。
下面的错误信息确实告诉你在android下找不到PCL项目。如果查看“输出”窗口,它将告诉您在Debug / Bin文件夹中找不到它。当我查看我的Bin文件夹时,我发现没有生成任何内容。
&#34; ResolveLibraryProjectImports&#34;任务意外失败。 System.IO.FileNotFoundException:无法加载程序集&#39; myApp,Version = 0.0.0.0,Culture = neutral,PublicKeyToken =&#39;。也许它在Mono for Android配置文件中不存在? 文件名:&#39; myApp.dll&#39;
看起来这是由使用.net标准1.0的NuGet包引起的。我的PCL项目仍在使用PCL配置文件。如果你有来自Adam Pedley的article中所述的.Net Core 1.0库,这通常没问题。如何在我的另一台计算机上工作是因为我安装了VS2017。 VS2017安装自动安装.Net Core。但我正在研究VS2015,它需要单独安装。
我希望这可以帮助其他人解决问题。
答案 3 :(得分:3)
可悲的是,这里描述的步骤对我没有帮助。但我开始了解原因。
行动的第一步是确定哪个包想要使用support.Fragment包。
为此,请将MsBuild输出设置为Diagnostics。 (tools =&gt; options =&gt; projects and solutions =&gt; Build and run)
然后构建,一旦报告错误,在日志中找到support.fragment。
在我的情况下,Acr.Userdialogs试图获得support.Fragment框架。
依赖“Xamarin.Android.Support.Fragment,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”。 (TASKID:415)
无法解析此引用。无法找到程序集“Xamarin.Android.Support.Fragment,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = null”。检查以确保磁盘上存在程序集。
如果您的代码需要此引用,则可能会出现编译错误。 (TASKID:415)
“Acr.UserDialogs,Version = 1.0.0.0,Culture = neutral,processorArchitecture = MSIL”要求。 (TASKID:415)
从这里起,这是一个降级Acr.Userdialogs框架的问题,直到这种依赖关系消失。
希望这会有所帮助: - )
答案 4 :(得分:0)
不是一个明确的答案,但由于这种类型的依赖问题似乎在多个地方蔓延,我终于找到了一种方法来至少看到重叠的位置。请参见屏幕截图如下。只需使用assember资源管理器“搜索”功能在错误消息中找到命名空间。然后单击命名空间,它将弹出重复的条目及其dll位置。
答案 5 :(得分:0)
对于任何可能会遇到此问题的人,我的诀窍是放弃app/app/obj/Debug/app.Core.csprojFileListAbsolute.txt
和app/app.Droid/Resources/Resource.Designer.cs
文件中的所有更改,然后删除bin
和{{1} }文件夹&#39;内容,最后重建项目。