ポケモンに関する情報を提供する基本的なアプリを作成して、Windows Phone開発者を学ぼうとしています。これを行うために、ユニバーサルクラスライブラリ(PokeLib.dll)を作成したため、ユニバーサルアプリと互換性があります。同じソリューション内のプロジェクト(「テスト」)でこれをテストしましたが、正常に動作します。 my Github でこれらのコードを見ることができますが、私が知る限りでは、すべて良いです。これら2つのプロジェクトは1つのソリューションに含まれています。 Windows Phoneアプリのソリューションでは、「既存のプロジェクト」としてPokeLibを追加し、参照を追加し、問題なく呼び出すことができるように数行のコードを記述しました。
MainPage.xaml:
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="auto"/>
<RowDefinition Height="*"/>
</Grid.RowDefinitions>
<Button Name="GetDataButton" Content="GetData" Click="GetDataButton_Click" Grid.Row="0" HorizontalAlignment="Center"/>
<TextBlock Name="DataText" Text="Click to get data" Grid.Row="1" Padding="10"/>
</Grid>
MainPage.xaml.cs:
protected override void OnNavigatedTo(NavigationEventArgs e)
{
p = new Pokemon(1); // gets data for Pokemon #1 (Bulbasaur)
}
Pokemon p;
int counter = 0;
private async void GetDataButton_Click(object sender, RoutedEventArgs e)
{
DataText.Text = "Fetching... Count: " + ++counter;
if (counter == 1) // first time button's clicked
{
await p.Create(); // populates the data container
DataText.Text = String.Format("Pokemon #{0}: {1}", p.Id, p.Name);
}
}
電話エミュレータでこれを実行しようとすると、次のメッセージが表示されます。 。プロジェクトを「デバッグ」としてビルドし、「ジャストマイコードを有効にする」のチェックを外しています。 [シンボル]ペインの下で何をすべきかはわかりませんが、役に立つ場合は、そのスクリーンショットも追加できます。
とにかく、アプリは開きますが、GetDataボタンを押すとフリーズします。その呼び出しは同期的に行われるため、しばらくフリーズすると予想していましたが、これは永続的なものです。ただし、エラー/例外はスローされません。デバッガーは、p.Create()呼び出しにステップインしようとしても応答しません(スクリーンショットのメッセージに起因する可能性があります)。
誰が私が間違っているのか知っていますか?ありがとう!
[プロジェクトのプロパティ]-> [ビルド]-> [詳細設定]ボタン-> [デバッグ情報]ドロップダウンに移動し、値を「full」に変更できます。
Visual Studioで、[ビルド]-> [ソリューションのクリーニング]を選択しました。それはこのメッセージを取り除きました
同じエラーを修正しました。 Visual Studio 2013で[ツール]-> [オプション]-> [デバッグ]-> [シンボル]に移動し、[空のシンボルキャッシュ]を押しました。
GACにあるアセンブリがあり、コンパイル/デバッグの前にVisual Studioがそれを削除していなかったときに、このエラーが発生していました。そのライブラリ(dll)をGACから削除することで解決できました。
//if pokelib.dll contained Assembly: PokeLibrary.Pokemon
//and it showed up in the GAC (c:\windows\Assembly\) with that Assembly name
gacutil /u PokeLibrary.Pokemon
これにより警告状態が解決し、もう一度デバッグできるようになりました。
デバッグモード用にコンパイルされていない参照DLLを使用してコードをデバッグしています。
デバッグで参照DLLをコンパイルして使用します。
参照されているDLLアドレスをチェックして、正しいDLLを使用していることを確認してください。
特に同じプロジェクトの複数のVSウィンドウを開いていないことを確認してください! :)
このメッセージを回避する唯一の方法は、[デバッグ]> [オプションと設定]> [デバッグ]> [シンボル]に移動し、[除外しない限りすべてのモジュール]というラジオボタンを選択することです。
これが理想的な回避策であるかどうかはわかりませんが、今のところ機能しています。
私の場合、同じ.dllを使用している別のバージョンのアプリケーションを実行していました。これにより、GACがデバッグバージョンで更新されなくなりました。タスクマネージャーを使用してプロセスを強制終了しました。
これが私の修正方法です。
同じページを2つのブラウザーで開いて、最初に1番目のブラウザーを選択してから、最初のブラウザーを閉じずに2番目のブラウザーをデバッグし、そのうちの1つを閉じて修正しました...
私も同じエラーに直面しました。私の場合、問題はweb.config変換ファイルがdebug.config以外のセットアップをしたかったためです。
ステージブランチを使用してバグを追跡する必要があったため、アクティブソリューション構成をステージとしてセットアップしました。
ステージを選択しましたが、プロジェクトをビルドするとこのエラーが発生し、そのためデバッガーが非アクティブになりました。
しかし、オプションをdebugに戻すと、問題は解決しました。
DotPeek
を使用してライブラリのPDBファイルを生成し、それをDLLと同じフォルダーに配置できます。コードがオープンソースの場合、もう1つのオプションは、リポジトリのクローンを作成し、プロジェクトをプロジェクトに追加し、依存関係を追加し、ビルド順序を設定して、デバッグを開始することです。