IDE0006エラー
Xamarinを使っていてエラーが出たので備忘録として・・・
〇重大度レベル
警告
〇コード
IDE0006
〇説明
プロジェクトの読み込み中にエラーが発生しました。失敗したプロジェクトとそれに依存するプロジェクトの完全なソリューション解析など、一部のプロジェクト機能が使用できなくなりました。
〇プロジェクト***** ファイル
〇行1
〇抑制状態
アクティブ
〇詳細の説明
この問題の原因を確認するには、次をお試しください。
1. Visual Studio を閉じる
2. Visual Studio 開発者コマンド プロンプトを開く
3. 環境変数 "TraceDesignTime" を true に設定する (set TraceDesignTime=true)
4. .vs directory/.suo ファイルを削除する
5. 環境変数 (devenv) を設定したコマンド プロンプトから VS を再起動する
6. ソリューションを開く
7. 'C:\Users\******\AppData\Local\Temp\\******_*.designtime.log' を確認し、失敗したタスク (FAILED) を探す
Xamarin.FormsのMasterDetailPageのテンプレートについて
Xamarinのテンプレートを見ているとデフォルトでDetailPageを発見!
PCLプロジェクトを右クリックして,【新しい項目を追加】から
適当に名前を付けて追加しますと,必要なものが勝手にできてしまう!!
が自動生成されます。
App.Xaml.csを修正して,
public App() { InitializeComponent(); //MainPage = new NavigationPage( new App8_PCL.MainPage()); MainPage = new DetailPage1(); }
ビルドすると・・・
CS0101エラーが発生し,名前空間が重複しているといわれます。
下記リンクによると,これはテンプレートのバグらしい。
優秀な世界のプログラマーに従って修正が必要です。
まず,作成された
の名前空間を直します。
それぞれのソースの名前空間が
(プロジェクト名).(適当につけた名前)
となっているので,
(プロジェクト名)のみに直します。
修正前・・・
namespace (プロジェクト名).DetailPage1
修正後・・・
namespace (プロジェクト名)
また,.DetailPage1Master.xaml.cs
class DetailPage1MasterViewModel : INotifyPropertyChanged { public ObservableCollection<DetailPage1MenuItem> MenuItems { get; } public DetailPage1MasterViewModel() { DetailPage1MenuItems = new ObservableCollection<DetailPage1MenuItem>(new[] { new DetailPage1MenuItem { Id = 0, Title = "Page 1" }, new DetailPage1MenuItem { Id = 1, Title = "Page 2" }, new DetailPage1MenuItem { Id = 2, Title = "Page 3" }, new DetailPage1MenuItem { Id = 3, Title = "Page 4" }, new DetailPage1MenuItem { Id = 4, Title = "Page 5" }, }); } public event PropertyChangedEventHandler PropertyChanged; void OnPropertyChanged([CallerMemberName]string propertyName = "") => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName)); }
の部分の
DetailPage1MenuItems = new ObservableCollection<DetailPage1MenuItem>(new[]{...}
を
ObservableCollection<DetailPage1MenuItem> DetailPage1MenuItems = new ObservableCollection<DetailPage1MenuItem>(new[]{...}
に修正します。
これで修正完了です。
ビルドしてみましょう。
ただし,このままだとAndroid版はbackキーを押したときエラーで落ちます。
Xamarin.Formsのバージョンを2.3.4系に上げるといいようなので,
一番(投稿時)新しいのは2.3.4.214-pre5なので,これをインストールし
ソリューションをクリーンした後,ビルドするとbackキーエラーも回避できるようです。
Could not load assembly Windows.Foundation.UniversalApiContractというビルドエラー
重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態
エラー Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'Windows.Foundation.UniversalApiContract, Version=3.0.0.0, Culture=neutral, PublicKeyToken='. Perhaps it doesn't exist in the Mono for Android profile?
ファイル名 'Windows.Foundation.UniversalApiContract.dll' です。'Windows.Foundation.UniversalApiContract.dll'
場所 Java.Interop.Tools.Cecil.DirectoryAssemblyResolver.Resolve(AssemblyNameReference reference, ReaderParameters parameters)
場所 Xamarin.Android.Tasks.ResolveAssemblies.AddAssemblyReferences(DirectoryAssemblyResolver resolver, ICollection`1 assemblies, AssemblyDefinition assembly, Boolean topLevel)
場所 Xamarin.Android.Tasks.ResolveAssemblies.Execute(DirectoryAssemblyResolver resolver)
というメッセージが出てビルドエラーが発生。
突然ビルドできなくなりましたが,
上記を参照すると,どうやらWindows.Storageが悪さしているよう。
Xamarin.Formsにおいてシリアライズしたデータを読み込むときにDependencyServiceを使って読み込もうとしているのですが,その際に誤ってAndroidプロジェクトにFileInputStreamを使ったのが間違い。
Intellisenseが効いたので使えるものと思っていましたが,なんと使えないとは!!
VisualStudi2017リリース
Visual Studio2017がリリースされたが、VS2015に入れているXamarinと共存できないみたいなのでしばらく様子見
Android.Views.InflateExceptionについて
Xamarinで何回かデバッグしているうちに
Android.Views.InflateException: Binary XML file line #1: Binary XML file line #1: Error inflating class android.support.v7.widget.Toolbar
というメッセージが出て困りました。
protected override void OnCreate(Bundle bundle) { TabLayoutResource = Resource.Layout.Tabbar; ToolbarResource = Resource.Layout.Toolbar; base.OnCreate(bundle);//<-ここで止まっちゃう global::Xamarin.Forms.Forms.Init(this, bundle); var app = new App(); LoadApplication(app); }
上記を参考に何回かバージョンを落として,アップデートしてを繰り返しましたが,なおらず・・・。
Androidの参照を除いてみると
- System.ObjectModel
に黄色い三角が表示されていました。
NuGetパッケージの復元ってやったらできました!