Visual studio アセンブリ参照があることを確認してください

このサイトのコードを
ほぼそのままコピーして実行した結果エラーが起きてしまいます。
エラーが
型または名前空間の名前Registrykeyが見つかりませんでした。
usingディレクディブまたはアセンブリ参照が指定されていることを確認してください。24行

現在のコンテキストにregistryという名前が存在しません。

とでてきます24行とでてきます。

usingディレクディブまたはアセンブリ参照が指定されていることを確認してくださいとあったので先ほどの参照リンクの

使用ライブラリ:Registryクラス(Microsoft.Win32名前空間)
使用ライブラリ:RegistryKeyクラス(Microsoft.Win32名前空間)
使用ライブラリ:NullReferenceException例外(System名前空間)
に目を付けました。
これらのクラスのアセンブリーを追加して
visual studio2017でソリューションエクスプローラーで参照を右クリックして

参照の追加 →アセンブリと移動して
これらのアセンブリの
mscorlibを追加したところ
ビルドシステムに自動的に参照されています。とでてきました。
usingディレクティブのほうも
using mscorlib;という風にいれてみたらエラーが増える一方でした。
下のプログラムを実行するにはどうすればいいですか。
パソコンはwindows10proです。

C#

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace rejiyomikomi { class Program { static void Main(string[] args) { // 操作するレジストリ・キーの名前 string rKeyName = @"SOFTWARE\Microsoft.NETFramework"; // 取得処理を行う対象となるレジストリの値の名前 string rGetValueName = "InstallRoot"; // レジストリの取得 try { // レジストリ・キーのパスを指定してレジストリを開く RegistryKey rKey = Registry.LocalMachine.OpenSubKey(rKeyName); // レジストリの値を取得 string location = (string)rKey.GetValue(rGetValueName); // 開いたレジストリ・キーを閉じる rKey.Close(); // コンソールに取得したレジストリの値を表示 Console.WriteLine(location); } catch (NullReferenceException) { // レジストリ・キーまたは値が存在しない Console.WriteLine("レジストリ[" + rKeyName + "]の[" + rGetValueName + "]がありません!"); } } } }

  • 2020/04/17
  • 19:31


最近は Visual Studio 2019 の開発環境を準備していますが、その際に Android プロジェクトにおいて参照設定のエラーでビルドができない現象に遭遇し、対応方法が難易度が高いと思いましたので、手順について覚え書きします。

最初にインストールした VS2019 v16.4 の開発環境では全ての参照設定が正常でしたが、モバイルノートにも同様の開発環境を構築したところ、参照設定の全てに警告マークがついていることに気が付きました。VS2019 のバージョンを更新すると発生する事象だと思います。

前提条件
・Windows10 Pro 64Bit 1903
・Visual Studio 2019 Community v16.5 以降
・Xamarin 16.4.000.311 (NuGet Xamarin.Forms 3.4.0.1029999)
・macOS Mojave 10.14.6 / Xcode 11.3.1 / Xamarin.iOS 13.10.0.17

1.エラーの内容

全ての参照設定に警告マークが表示されているだけではなく、エラー一覧に以下の様にエラーと警告が表示されていました。
※ビルドすると表示されます。

Visual studio アセンブリ参照があることを確認してください


<エラー>
Assembly 'Xamarin.GooglePlayServices.****' is using '[assembly: Android.IncludeAndroidResourcesFromAttribute]',  which is no longer supported. Use a newer version of this NuGet package or notify the library author.

<警告>
参照コンポーネント 'System.*****' が見つかりませんでした。

2.対応方法

(1)NuGetパッケージを更新
NuGetパッケージマネージャにて Xamarin.GooglePlayServices から始まるパッケージを全てアップデートします。(Xamarin.GooglePlayServices.Base を更新すると全てのパッケージが更新されます。更新されないものもありますので、必要ない場合はアンインストールすると良いでしょう。)

Visual studio アセンブリ参照があることを確認してください

更新後のバージョンは v42.1021.1 にしました。v71 にも更新してみましたが、ビルドが通らなかったり、Java のヒープサイズが 1G ではなく 2G 必要だったりしましたので、取り急ぎこのバージョンにすることにしました。

この件は、マイクロソフト公式ページにも記載ありましたが、v27以降であれば良いと書かれています。
https://docs.microsoft.com/en-us/xamarin/android/release-notes/10/10.2#new-build-errors-and-warnings-xa0121-xa2000-xa2001

また、上記のパッケージを更新しているにも関わらず、警告が表示される場合もあります。その場合は、以下の手順で NuGet パッケージを全て再取得します。
1. VS2019 を終了します。
2.

ソリューションフォルダ\packages の中のフォルダを全て削除します。
※何かあるといけませんのでバックアップは取っておいてください。)
3. 再度 VS2019 を起動し、ソリューションフォルダを右クリックして、NuGet パッケージの復元を行います。
4. packages フォルダのそれぞれの NuGet パッケージのフォルダ内に build 及び lib フォルダが存在し、そのフォルダ内にも各種DLLがダウンロードされていることを確認します。

(2)armeabiの対応
パッケージマネージャを更新してからリビルドをすると、以下のようなエラーに遭遇しました。

Visual studio アセンブリ参照があることを確認してください

Invalid value 'armeabi' in $(AndroidSupportedAbis). This ABI is no longer supported. Please update your project properties to remove the old value. If the properties page does not show an 'armeabi' checkbox, un-check and re-check one of the other ABIs and save the changes.

これはサポート外になった armabi をサポートするように Android プロジェクトで設定している為に表示されます。

Androidプロジェクトのプロパティ > Androidオプション > 詳細設定ボタン >サポートされているアーキテクチャ
を開き、armabi を未選択状態に設定します。(※ドロップダウンリストを展開・未展開するだけで選択肢から消えます)

Visual studio アセンブリ参照があることを確認してください

(3)MultiDex のエラー対応
さらに、リビルドしたところ、以下のようなエラーに遭遇しました。

Compilation can't be completed because some library classes are missing.
MultiDex を一度無効にしてビルドして、再度有効にすることでエラーがなくなりました。

(4)ビルドできない場合
.vs フォルダや全ての bin/obj フォルダを削除してから、クリーン・リビルドを行ってください。

以上で Visual Studio 2019 において Xamarin.Android で参照エラーになっている現象を解決することができました。

Xamarin.Forms の開発環境を Visual Studio 2019 へ移行する方法 その2へ

最後までお読みいただきありがとうございます。
当ブログの内容をまとめた Xamarin逆引きメニュー は以下のURLからご覧になれます。
https://itblogdsi.blog.fc2.com/blog-entry-81.html

関連記事
  • Visual Studio 2019 で iOS 13 に対応する方法 -ホワイトスクリーン対応- | Xamarin.Forms
  • MSB4094: Csc タスクの OutputAssembly パラメーターには無効な値です。複数の項目を、型 Microsoft.Build.Framework.ITaskItem のパラメーターに渡すことはできません。 | Xamarin.Forms
  • Visual Studio 2019 で参照設定のエラーを修正する方法 | Xamarin.Forms
  • Xamarin.Forms targets have been imported multiple times. Please check your project file and remove the duplicate import(s). | Xamarin.Android
  • ストレージの総容量・空き容量を取得する方法 | Xamarin.Forms

コメントの投稿

※名前とタイトルが入力されていないコメントでは他のコメントとの区別ができません。

入力されていないコメントには返信しませんのであらかじめご了承くださいませ。