天道酬勤,学无止境

“未加载模块 MyLibrary.dll 的符号”?(“Symbols for the module MyLibrary.dll were not loaded”?)

问题

我正在尝试通过制作一个提供有关 Pokemon 信息的基本应用程序来学习 Windows Phone 开发人员。 为此,我创建了一个可移植的类库 (PokeLib.dll),因此它与通用应用程序兼容。 我已经通过同一解决方案(“测试”)中的一个项目对此进行了测试,并且效果很好。 你可以在我的 Github 上查看这些代码,但据我所知,一切都很好。 这两个项目在一个解决方案中。 对于 Windows Phone 应用程序的解决方案,我将 PokeLib 添加为“现有项目”,添加了引用,并编写了几行代码以确保我可以调用它:

主页.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() 调用(可能源于屏幕截图中的消息)时,调试器也没有响应。

任何人都知道我做错了什么? 谢谢!

回答1

您可以转到 Project Properties -> Build -> Advanced 按钮 -> Debug info 下拉菜单并将其值更改为“full”。

回答2

在 Visual Studio 中,我选择了 Build -> Clean Solution。 那摆脱了这条消息

回答3

我刚刚修复了同样的错误。 我转到工具 -> 选项 -> 调试 -> 符号并在 Visual Studio 2013 中按下空符号缓存。可能以一种不太优雅的方式删除 bin 和 obj 文件夹几乎相同。

回答4

当我在 GAC 中有一个程序集并且 Visual Studio 在编译/调试之前没有删除它时,我遇到了这个错误。 我能够通过从 GAC 中删除该库 (dll) 来解决它。

//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

这解决了警告条件并允许我再次调试。

回答5

您正在使用未为调试模式编译的引用 dll 调试代码。

在调试中编译引用的 dll 并使用它。

检查引用的 dll 地址以确保您使用的是正确的 dll。

回答6

确保您没有打开多个 VS 窗口,特别是同一个项目! :)

回答7

就我而言,我运行了另一个版本的应用程序,它使用相同的 .dll。 这阻止了 GAC 使用调试版本进行更新。 我通过任务管理器终止了进程。

回答8

我可以绕过此消息的唯一方法是转到调试 > 选项和设置 > 调试 > 符号,然后选择名为“所有模块,除非排除”的单选按钮。

我不确定这是理想的解决方法,但它现在正在起作用。

回答9

您可以使用DotPeek为库生成 PDB 文件,然后将其放在与 dll 相同的文件夹中。 如果代码是开源的,另一种选择是克隆 repo,将项目添加到您的项目中,添加依赖项,设置构建顺序并开始调试。

回答10

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

我进入项目属性,编译选项卡,高级编译选项...并取消选中Enable Optimizations复选框

回答11
  1. 关闭视觉工作室。
  2. 使用 cclener 执行快速清理。
  3. 清洁解决方案和重建项目

&这对我有用。 (我真的不知道如何)

回答12

我的就是这样修复的

我在两个浏览器中打开了同一个页面,起初我选择第一个浏览器然后选择第二个浏览器进行调试而不关闭第一个浏览器,关闭其中一个修复它......

回答13

我也遇到了同样的错误,在我的情况下,问题是因为 web.config 转换文件我想设置而不是 debug.config。

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

  • 转到项目解决方案的属性选项
  • 单击右上角的配置管理器按钮。
  • 现在向下钻取下拉选项活动解决方案配置,并为您的项目选择配置 (web) 文件,以便在运行时对其进行操作。

我选择了阶段,当我构建项目时,我收到了这个错误,因此调试器变得不活动。

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

回答14

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

  1. 删除解决方案文件夹/子文件夹下的所有\Bin\Debug文件夹
  2. Clearnup 解决方案(右键单击解决方案以选择“清洁解决方案”)
  3. 构建/重建解决方案
  4. 结束
回答15

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

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐