web-dev-qa-db-ja.com

Xamarin.Android.Support.Fragment、Version = 1.0.0.0、Culture = neutral、PublicKeyToken = '。おそらく、Mono for Android=プロファイルに存在しませんか?

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"でしたが、マヌラを交換しましたが、まったく役に立ちませんでした。この問題を解決するにはどうすればよいですか?

  <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を再インストールし、Androidプロジェクトを1台のPCで実行することに成功しましたが、同じプロジェクトが別の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     
7
batmaci

次の2つの問題があったため、タイトルの名前を変更しました。これらは実際に似ており、どちらもAndroidプロジェクトのみに関連しています)。

  1. 1つ目は、24.x.x以降のバージョンで使用できるsupport.Fragmentについて不満を述べていましたが、23.0.xを使用していました。これは、おそらく25.3.1バージョンからのダウングレードが原因でした。私が何をしようとしても、bin、obj、temp、rebuildをクリーンアップしても効果がありませんでした。コマンドUpdate-Package –reinstalltoソリューションのすべてのNuGetパッケージを再インストールします。これは私のPCの1つで役立ちました。しかし、私の別のPCでは、質問のように2番目のエラーが発生しました。

  2. 以下のエラーメッセージは、PCLプロジェクトがAndroidで見つからないことを示しています。 [出力]ウィンドウを見ると、Debug/Binフォルダーにないことがわかります。 Binフォルダを見ると、何も生成されていないことがわかりました。

    "ResolveLibraryProjectImports"タスクが予期せず失敗しました。 System.IO.FileNotFoundException:アセンブリ 'myApp、Version = 0.0.0.0、Culture = neutral、PublicKeyToken ='を読み込めませんでした。おそらく、Mono for Androidプロファイルに存在しませんか?ファイル名: 'myApp.dll'

これは、.net標準1.0を使用しているNuGetパッケージが原因で発生したようです。私のPCLプロジェクトはまだPCLプロファイルを使用していました。 Adam Pedleyの article に記載されている.Net Core 1.0ライブラリがある場合、これは通常問題ありません。他のコンピューターでの動作は、VS2017がインストールされていたためです。 VS2017のインストールでは、.Net Coreが自動的にインストールされます。しかし、私はVS2015に取り組んでおり、個別にインストールする必要があります。

これが他の誰かが問題を抱えているのに役立つことを願っています。

3
batmaci

私の問題は、xamarinフォームを2.5.0.121934に更新した後、エラー「アセンブリの読み込み中に例外が発生しました:System.IO.FileNotFoundException:アセンブリ 'Xamarin.Android.Support.Fragment、Version = 1.0.0.0、Culture =を読み込めませんでしたニュートラル、PublicKeyToken = '。AndroidプロファイルのMonoに存在しない可能性があります。 "

したがって、xamarin.formを2.3.4.247にダウングレードすると、正常にビルドされます。

6
UniSize

ここでの最良のオプションは、すべてのXamarinおよびAndroidパッケージをXamarin.Androidプロジェクトからアンインストールすることです。次に、Xamarin.Formsを再度インストールすると、正しい依存関係が追加されます。

または、ダウンロードしてみてください

Install-Package Xamarin.Android.Support.Fragment
4
Adam Pedley

悲しいことに、ここで説明されている手順は役に立ちませんでした。しかし、私は原因を回避しました。

アクションの最初のステップは、どのパッケージがsupport.Fragmentパッケージを使用したいかを決定することです。

これを行うには、MsBuild出力をDiagnosticsに設定します。 (ツール=>オプション=>プロジェクトとソリューション=>ビルドして実行)

次にビルドし、エラーが報告されたら、ログでsupport.fragmentを見つけます。

私の場合、support.Fragmentフレームワークを取得しようとしたのはAcr.Userdialogsでした。

依存関係「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フレームワークをダウングレードするという問題でした。

お役に立てれば :-)

3

決定的な答えではありませんが、このタイプの依存関係の問題は複数の場所で忍び寄るように見えるので、少なくとも重複がどこにあるかを確認する方法をようやく見つけました。次のスクリーンショットを参照してください。アセンブラエクスプローラの「検索」機能を使用して、エラーメッセージで名前空間を見つけます。次に名前空間をクリックすると、重複するエントリとそのdllの場所がポップアップ表示されます。

error messageSearch the duplicate namespace in assembler Explorer

0
GGleGrand

これに苦労する可能性のある人にとって、私にとってのトリックは、私の変更をすべて破棄することでしたapp/app/obj/Debug/app.Core.csprojFileListAbsolute.txtおよびapp/app.Droid/Resources/Resource.Designer.csファイル、次にbinおよびobjフォルダーの内容を削除し、最後にプロジェクトを再構築します。

0
antonis_st