MvvmCross
に基づいたXamarinプロジェクトがあります。このプロジェクトは、iOSとAndroidの両方を対象としています。このプロジェクトをVisual Studio 15で開きました。いくつかのエラーが発生しましたが、すぐに解決しました。いくつかのエラーがあり、それらはスタックしており、GoogleやStackoverflowで検索した後でも解決できませんでした。 Stackoverflowで見つかったすべてのメソッドを試しましたが、まだすべての残りのエラーがあります。このプロジェクトでは、RestSharpやBoxApi.V2などのサードパーティライブラリを使用しています(さらにいくつか)
以下にエラーログを掲載しています。
Severity Code Description Project File Line Suppression State
Error The "ResolveLibraryProjectImports" task failed unexpectedly.
System.IO.FileNotFoundException: Could not load Assembly 'RestSharp(Android), Version=0.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
File name: 'RestSharp(Android).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() BoxApi.V2 (Android)
このエラーは、このソリューションに含まれるすべてのプロジェクトで繰り返されています。そのため、このエラーが複数回発生しています。
また、プロジェクトが以前にMACでビルドされており、Windowsを使用していることを追加したいのですが、これにより互換性やOS間の問題が発生しますかすべてのアセンブリ参照を確認しましたが、すべて正常に動作しています。
Visual Studio 2017の新しいXamarin.Formsアプリケーションを使用して、文字通りこれを実現しました。
根本的な原因は、VS2017にデフォルトの場所「C:\ Users\Dave\Documents\Visual Studio 2017\Projects」にプロジェクトを作成させ、これにより1つ以上のファイルにパスが長くなりすぎたためです。
ソリューションをDドライブのルートに移動しましたが、問題なくビルドされます。
以下のようにAndroidプロジェクトファイル(csproj)を編集します
この問題のトピックがガイドになる場合があります https://github.com/xamarin/AndroidSupportComponents/issues/51
同じ問題がありました。ここに私の解決策があります
XAML(。xaml)と分離コードファイル(。xaml.cs)を使用しています。私の問題は、同じページ名が異なる名前空間の下にあったことです。 XAMLとコードビハインドファイルは一致しませんでした。当然、ビュー要素を見つけることができなかったため、最終的にXAMLの問題でした。
私にとっては、問題はxamlファイルにありました...
どういうわけか、レイアウト境界の設定中に「。」を使用しました「、」の代わりにセパレータとして
例えば
AbsoluteLayout.LayoutBounds="0.5.0.3,1,0.3"
はAbsoluteLayout.LayoutBounds="0.5,0.3,1,0.3"
でなければなりませんでした
したがって、「。」を変更します「」に問題を解決しました
これは私のために働いた:
お役に立てれば。
私の場合、この問題はxamlに関連する別の問題に伴って発生しました。
このエラーが消えるには、2番目の問題を解決する必要がありました。新しいデフォルトのコンテンツでクラスをクリーンアップしてから、すべてのプロジェクトとソリューションをクリーンアップします。最後に、ビジュアルスタジオを閉じて開き、プロジェクトを実行します。
これはまだ新しい問題です。すべての試みの後、コードをより短いパスにシフトしようと試みましたが、svn管理が複雑になるため、多くの作業がありますので、最初にパスが本当に問題であるかどうかを確認したかったこれを行う方法は、Android SDKが保存されている場所を確認することでした。私はMacを使用していますが、調査の結果、SDKのパスがプロジェクトのパスよりも長いことがわかりました。さらに、私は新鮮なプロジェクトを試してみましたが、それは正しくコンパイルされていました。
だから私はシフトのアイデアを落とした。代わりに、svnを使用して、最後の正しいビルド以降に変更されたものを比較しました。
この比較により、droidのプロジェクトファイルはiOSのプロジェクトファイルを何らかの形で参照していることがわかりました。VisualStudioのバグのようです。だから私は変更を元に戻し、すべてが通常に戻った。
私たちもこれに遭遇しました。複数のプロジェクトと非常に深い/複雑な依存関係ツリー(この例には100以上のプロジェクトがあります)を構築するときの競合状態のようです。
これを解決し続けた唯一の方法は(継続的な再構築を超えて)Visual Studio 2017の並列ビルド機能を無効にすることです(ツール->オプション->プロジェクトとソリューション->ビルドと実行-> "1"並列プロジェクトの最大数ビルド)。
問題はResolveLibraryProjectImports.csにあるようです( https://github.com/xamarin/xamarin-Android/blob/93ddf96f86710ad848d5189858567dd7fe964579/src/Xamarin.Android.Build.Tasks/Tasks/ResolveLibraryProjectImports.cs )ファイル名を短縮するためのロジックに競合状態がある可能性があります。
これに関するテストはゼロであり、これはおそらく危険なコードがあることを意味します。
さらに掘り下げてGitHubで問題を公開しようとしますが、信頼できるレポジトリを見つけることはおそらく非常に難しいでしょう。
これは、ソリューションに含まれているクラスライブラリにnugetパッケージを誤ってインストールしたときに起こりました。クラスライブラリプロジェクトからパッケージをアンインストールする必要がありました。
まだ問題がありますか?名前空間とxamlコードを確認してください。いくつかのファイルをコピー/貼り付けすると、問題になる場合があります。
それがあなたの誰かを助けるかどうかわからない。私の場合、エラーのあるクラス(例:参照が欠落しているクラス)にコメントすると、すべてをピックアップして再構築し始めます。
同じエラーが発生し、開いている他のxamarinソリューションをすべて閉じることでこれを解決します。この問題を解決したもう1つの方法があります->タスクマネージャに移動してMSBUILDサービスを見つけてそのサービスを終了します->ソリューションをクリーンアップします->再構築
問題は次のとおりです。System.IO.PathTooLongException:指定されたパス、ファイル名、またはその両方が長すぎます。完全修飾ファイル名は260文字未満、ディレクトリ名は248文字未満にする必要があります。
プロジェクトを "C:/"のような別の場所に移動するか、プロジェクトの名前をもっと短い名前に変更してください
このエラーもありました。私の状況では、Xamarin.Forms.Maps
ファイルの1つに正しくインポートされないxaml.g.cs
が伴いました。すべてのusingステートメントが正しいものでした。 IDEはエラーを表示していませんでしたが、Xamarin.Forms
には名前空間マップがなかったことを通知し続けました。 MapPage.xaml.g.cs
ではなくXamarin.Forms.Map
としてXamarin.Forms.Maps.Map
で生成されていたため、手動で修正を強制できませんでした。ただし、マップに推奨されるxmlns:maps
が問題の原因であることが判明しました。 IDEは"http://xamarin.com/schemas/2014/forms"
を使用するように言っていましたが、正しい名前空間は"clr-namespace:Xamarin.Forms.Maps;Assembly=Xamarin.Forms.Maps"
です。これを変更した後、App1.dll
をビルドできました
今日も同じ問題に直面しています。 2日間の検索の後、解決策を見つけました here 。問題は、Xamarin.Formsライブラリは、Visual Studio 2017からクロスプラットフォームモバイル(Xamarin.Forms)プロジェクトテンプレートを選択してプロジェクトを最初に作成する際に、依存するすべてのNugetパッケージをインストールしないことです。正常にプロジェクト。また、問題を解決するXamarin.Formsを最後に削除および追加しました。
また、Visual Studio 2017の2つのインスタンスが実行されているときに問題が発生する場合があります。この問題も発生しているため、1つのインスタンスのみが実行されていることを確認してください。
これがエラーの原因です。 StackLayoutでPaddingプロパティを設定し、4桁をコンマではなくスペースで区切りました。バグを見つけるには、XAMLコントロールを個別にコメントアウトし、エラーがどこにあるかを特定するために再構築する必要があり、最終的に問題の行を見つけました。基本的にこれは、XAMLコードの構文エラーに対して取得したエラーメッセージです。他の言語では、エラーが何であるかが通知されるので、数秒で修正できます。しかし、これには数時間かかりました-次回は何をすべきか知っていますが。
簡潔な答え:
OR
私はOPと同じ解決策に直面していました。これは、OPが抱えていたエラーの解決策です。以下に、他の人に発生する可能性のあるエラーの他の原因に対処しました。
説明:通常、発生する可能性のある2種類の問題があります。最初のファイルには、System.IO.readerには長すぎるプロジェクトファイルが含まれており、「file.path too long」の行に沿ったテキストを含むエラーが発生します。
エラーの2番目の原因は、VSがdllの正しい名前を形成しているが、プロジェクトリソースのパスが正しくないためです。例として、「App1\bin\Debug\net1.6\temp.dll」ではなく「App1\bin\Debug\net452\temp.dll」を使用するVSがあります。
xmlns:maps="clr-namespace:Xamarin.Forms.Maps; Assembly=Xamarin.Forms.Maps"
問題は、上記のセミコロンとアセンブリの間にスペースがあるためです。ギャップが閉じられるとすぐにコンパイルされます。
このような問題は、私の場合のように誤って構文エラーがある場合にも発生する可能性があります。ListViewに2つのテキストセルがありました-
<ListView x:Name="ProductsView">
<ListView.ItemTemplate>
<DataTemplate>
<TextCell Text="{Binding ProductId}" />
<TextCell Text="{Binding ProductDescription}" />
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
この問題について他の投稿を調べましたが、構文エラーが存在するために同じ問題が発生したことがわかりましたが、VSは直接報告しません。これを探してください。そうでなければ、xamarin.formsの互換性のあるバージョンを再インストールしてください。
私はこの問題に何千回も直面しましたが、実際には非常に簡単なことです。新しいプロジェクトVisual Studioを作成すると、C:Driveのデフォルトフォルダーに作成されます。 E:ドライブのルートに保存することを確認してください。つまり、Dで移動した場合:D/Project/solutionFileのように配置します。
それはおそらくあなたの参照/参照アセンブリの問題ですか?
ソリューションエクスプローラーで各プロジェクトの参照フォルダーの下を見ると、Visual Studioがそれらを検索、削除、再追加できない参照を追加します(追加する参照フォルダーを右クリックします)。