"MyLibrary.dll模块的符号未加载"

23
我正在学习制作一个关于Pokemon信息的基本应用程序,以此来学习Windows Phone开发。为此,我创建了一个可移植类库(PokeLib.dll),使其与通用应用兼容。我通过同一解决方案中的一个项目(“Test”)进行了测试,一切正常。你可以在我的Github上查看这些代码,但据我所知,它们都很好。这两个项目在同一个解决方案中。对于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);
        }
    }

当我尝试在手机模拟器上运行此项目时,出现以下消息:。我以 "debug" 模式构建项目,并取消了 "启用我的代码" 选项。我不确定在 Symbols 面板下该怎么做,但如果有用的话,我也可以添加屏幕截图。

无论如何,应用程序会打开,在我按下 GetData 按钮时会冻结。我预计由于该调用是同步完成的,它会冻结一会儿,但这是永久性的。然而,没有错误/异常被抛出。当我尝试步入 p.Create() 调用时,调试器也没有响应(可能源于屏幕截图中的消息)。

有人知道我做错了什么吗?谢谢!


可能存在死锁问题。您应该等待调用 p.Create 而不是调用 Wait 方法。在 UI 线程上等待本来就是不好的做法。 - Kevin Gosse
@KooKiz 我知道,我只是想让一些概念验证的东西工作起来。我已经更新了帖子,加入了最新的代码。虽然现在GetDataButton_Click方法是异步的,但在按下按钮后程序仍会挂起,这本来不应该发生。 - Benjin
1
我意识到这个问题有点老了,但是清理解决方案并重新启动 VS 对我来说解决了这个错误。 - Brandon Ward
15个回答

0
  1. 关闭 Visual Studio。
  2. 使用 CCleaner 进行快速清理。
  3. 清理解决方案 & 重新构建项目。

& 对我来说,这个方法奏效了。(我真的不知道为什么)


0

我发现我收到消息的项目在构建时正在进行优化。

我进入项目属性,编译选项卡,高级编译选项...并取消选中启用优化复选框。

DeselectEnableOptimizations


0

我只是按照以下步骤操作,消息就消失了!

  1. 删除解决方案文件夹/子文件夹下的所有\Bin\Debug文件夹
  2. 清理解决方案(右键单击解决方案选择"清理解决方案")
  3. 构建/重新构建解决方案
  4. 完成

0

确保您在调试模式下进行调试,而不是发布模式


你说的“在发布模式下调试”是什么意思? :) - Hugo Quintela Ribeiro
在Visual Studio中,如果将其左侧的组合框切换为“发布”而不是“调试”,则按下“开始”按钮时,您将无法访问断点,并且会产生相同的错误。由于我的工作场所所有内容都是用法语编写的,因此我不确定这些术语和名称在英语中的正确表述。 - GabParrot

0

我也遇到了同样的错误,我的问题是由于我想要设置除debug.config之外的web.config转换文件。

我必须使用stage分支跟踪错误,因此我将活动解决方案配置设置为Stage

  • 进入项目解决方案的属性选项
  • 点击右上角的配置管理器按钮。
  • 现在展开下拉选项活动解决方案配置,选择你运行时要操作的项目配置(web)文件。

我选择了stage,当我构建项目时,我得到了这个错误,因此调试器变得无效。

但是当我将选项设置回debug时,问题得到了解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接