Xamarin.Android.Support.Fragment,Version = 1.0.0.0,Culture = neutral,PublicKeyToken ='。也许它在Mono for Android配置文件中不存在?

时间:2017-05-16 23:16:39

标签: xamarin xamarin.android xamarin.forms

我试图使用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" />

我的设置如何 enter image description here

参考文献: enter image description here

更新: 我已经重新安装了所有的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     

6 个答案:

答案 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项目相关。

  1. 第一个抱怨支持。片段在24.x.x版本之上可用,但我使用的是23.0.x.造成这种情况可能是因为从25.3.1版本降级。无论我尝试什么,清洁垃圾桶,对象,温度,重建都没有帮助。我使用命令Update-Package –reinstall在解决方案中重新安装所有NuGet包。这有助于我的一台电脑。但是在我的另一台电脑上,我在问题中得到了第二个错误。

  2. 下面的错误信息确实告诉你在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;

  3. 看起来这是由使用.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位置。

error message Search the duplicate namespace in assembler explorer

答案 5 :(得分:0)

对于任何可能会遇到此问题的人,我的诀窍是放弃app/app/obj/Debug/app.Core.csprojFileListAbsolute.txtapp/app.Droid/Resources/Resource.Designer.cs文件中的所有更改,然后删除bin和{{1} }文件夹&#39;内容,最后重建项目。