fc2ブログ

記事一覧

Visual Studio 2019 で Android プロジェクトのブレークポイントに止まらない不具合の対処方法 | Xamarin.Forms


Xamarin で作成したアプリを Visual Studio 2019 に移行して、Android プロジェクトでデバッグ実行したところ、設定したブレークポイントに HIT しない(止まらない)ことが分かりました。Visual Studio 2017 では普通にデバッグできていましたし、Visual Studio 2019 に起因するものとは考えていましたが、落とし穴に気づかず、解決するのに時間がかかってしまいました。


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



1.不具合の内容

Android プロジェクトに実装しているどのソースコードにブレークポイントを設定して実行しても、ブレークポイントに止まりません。当然 Debug ビルドであり、ブレークポイントが無効になっていたりすることもなく、.net のデバッグシンボルである pdb ファイルもビルドされています。

VisualStudio2019_XamarinAndroid_debug_00.png



2.対応方法

(1)Visual Studio を v16.6.2 以降 (※注1) に更新します。
※注1:v16.6.0 の場合 Resources に関する動作不良の不具合が発生します。

(2)Android プロジェクトのプロパティから、ビルド > 詳細 > デバッグ情報 の設定を「完全」から「埋め込み」にレベルを下げます。 再設定します。
プロジェクトファイルにこの項目(後述の DebugType )が何らかの原因で漏れていたことが原因でありました。
※「完全」でもデバッグできました。初期値が「完全」で表示されるため、表示されていてもプロジェクトファイルに設定されていない場合があります。

VisualStudio2019_XamarinAndroid_debug_01.png


(3)Android プロジェクトのプロパティから、Android オプション > パッケージングプロパティ > 共有ランタイムの使用 の設定を「チェックなし」に変更します。 再設定します。
※VS2017 から移行した場合、チェックが付いていなくてもチェックありの場合と同様に扱われる場合があります。その場合は、次の検証の手順に記載ありますようにプロジェクトファイルをテキストエディタで編集して、AndroidUseSharedRuntime=true に設定します。

(4)Android プロジェクトのプロパティから、Android オプション > パッケージングプロパティ > リンカープロパティ の設定を「チェックなし」に変更します。 再設定します。
※VS2017 から移行した場合、チェックが付いていなくてもチェックありの場合と同様に扱われる場合があります。その場合は、次の検証の手順に記載ありますようにプロジェクトファイルをテキストエディタで編集して、
AndroidLinkMode=SdkOnly に設定します。
※AndroidLinkMode=None だとアプリケーションが正しく動作しない場合があります。(エンコードに関する読み書きができなくなります)

VisualStudio2019_XamarinAndroid_debug_06.png



3.検証

プロジェクトファイルを確認すると、以下の箇所を変更することでブレークポイントに止まるようになっておりました。

AppName.droid.csproj
  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>True</DebugSymbols>
<DebugType>embedded</DebugType>
<Debugger>Xamarin</Debugger>
<AndroidLinkMode>SdkOnly</AndroidLinkMode>
<AndroidUseSharedRuntime>true</AndroidUseSharedRuntime>
</PropertyGroup>

AndroidLinkMode が SdkOnly に設定されていると、プロジェクトファイルのプロパティで「共有ランタイムの使用」にチェックが付きませんので、よくご確認ください。

VisualStudio2019_XamarinAndroid_debug_05.png


尚、他の開発環境を確認したところ、古い VS バージョンでは、これらの設定がされていなかったとしてもデバッグ実行は可能でした。そのことから Visual Studio の不具合であると私は確信しております。
以上で Visual Studio 2019 において Android のプロジェクトでブレークポイントに止まるようになりました。


参考URL
https://github.com/realm/realm-dotnet/issues/1910


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






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



関連記事

コメント

コメントの投稿

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

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

※ニックネームでも良いので必ずご入力ください。

    

※必ずご入力ください。

    
    

※必ずご入力ください。

※技術的な質問には環境やエラーについて正確かつ詳細にお教えください。

・正確なエラーの内容

・Windowsのバージョン番号

・Visual Studioのバージョン

・機器の型番

・アプリやソフトのバージョン

    

カテゴリ別記事一覧

広告

プロフィール

石河 純


著者名 :石河 純
自己紹介:素人上がりのIT技術者。趣味は卓球・車・ボウリング

IT関連の知識はざっくりとこんな感じです。
【OS関連】
WindowsServer: 2012/2008R2/2003/2000/NT4
Windows: 10/8/7/XP/2000/me/NT4/98
Linux: CentOS RedHatLinux9
Mac: macOS Catalina 10.15 / Mojave 10.14 / High Sierra 10.13 / Sierra 10.12 / OSX Lion 10.7.5 / OSX Snow Leopard 10.6.8
【言語】
VB.net ASP.NET C#.net Java VBA
Xamarin.Forms
【データベース】
Oracle 10g/9i
SQLServer 2016/2008R2/2005/2000
SQLAnywhere 16/11/8
【BI/レポートツール】
Cognos ReportNet (IBM)
Microsoft PowerBI
ActiveReport (GrapeCity)
CrystalReport
【OCX関連】
GrapeCity InputMan SPREAD MultiRow GridView
【ネットワーク関連】
CCNP シスコ技術者認定
Cisco Catalyst シリーズ
Yamaha RTXシリーズ
FireWall関連
【WEB関連】
SEO SEM CSS jQuery IIS6/7 apache2

休みの日は卓球をやっています。
現在、卓球用品通販ショップは休業中です。