【问题标题】:"Symbols for the module MyLibrary.dll were not loaded"?“未加载模块 MyLibrary.dll 的符号”?
【发布时间】:2014-11-29 18:20:38
【问题描述】:

我正在尝试通过制作一个提供有关 Pokemon 信息的基本应用程序来学习 Windows Phone 开发。为此,我创建了一个可移植类库 (PokeLib.dll),因此它与通用应用程序兼容。我已经通过同一解决方案(“测试”)中的一个项目对此进行了测试,它工作正常。您可以在my 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);
        }
    }

当我尝试在手机模拟器上运行它时,我收到以下消息: 。我将项目构建为“调试”并且未选中“启用我的代码”。我不确定在“符号”窗格下该做什么,但如果有用的话,我也可以添加它的屏幕截图。

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

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

【问题讨论】:

  • 某处可能出现死锁。您应该等待您对p.Create 的调用,而不是调用Wait 方法。无论如何,等待 UI 线程是不好的做法
  • @KooKiz 我知道,我只是想让一些概念验证工作。我已经用最新的代码更新了帖子。按下按钮后它仍然挂起,我认为这不应该发生,因为 GetDataButton_Click 方法现在是异步的。
  • 我意识到这个问题有点老了,但是清理解决方案并重新启动 VS 为我解决了这个错误。

标签: c# .net windows-phone-8 win-universal-app


【解决方案1】:

您可以转到项目属性 -> 构建 -> 高级按钮 -> 调试信息下拉菜单并将其值更改为“完整”。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在他们的帖子下方发表评论 - 您可以随时评论自己的帖子,一旦您有足够的reputation,您就可以comment on any post
  • 我不想批评或要求作者澄清。我只是提出了帮助我删除此消息的解决方案。
  • 谢谢,但这对我没有帮助。拥有一个 Silverlight 项目和一个带有可移植类库的通用项目。可移植类库在 silverlight 客户端和另一个类库之间共享。
  • 没用。我仍然有同样的恼人信息。
  • 它对我有用。这对我来说是一个提醒,因为当这发生时就是未来。 :) 此外,调试也很有效。
【解决方案2】:

在 Visual Studio 中,我选择了构建 -> 清洁解决方案。 这摆脱了这条消息

【讨论】:

    【解决方案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
    

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

    【讨论】:

    • 我也遇到了同样的问题,但是为什么要从 GAC 中使用,是否有任何解决方法而不是从 GAC 中删除它们?
    • 是的。如果您的源代码与 GAC 中的版本匹配,您可以使用 exe 来运行/加载 dll(来自 GAC,而不是来自您的项目)对其进行调试,然后您可以使用 Visual Studio 来“附加到进程”(菜单,工具,附加到过程)。但是,如果您对代码进行任何更改,则无论如何都必须取消/重新 GAC dll。
    • 从 GAC 中删除 .dll 后我必须做的进一步的步骤是清理并构建项目。
    【解决方案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。

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

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

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

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

                  【讨论】:

                    【解决方案14】:

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

                    1. 已删除解决方案文件夹/子文件夹下的所有 \Bin\Debug 文件夹
                    2. Clearnup 解决方案(右键单击解决方案选择“Clean Solution”)
                    3. 构建/重建解决方案
                    4. 完成

                    【讨论】:

                      【解决方案15】:

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

                      【讨论】:

                      • 你的“在发布模式下调试”是什么意思? :)
                      • 好吧,在 Visual Studio 中按下开始,左侧的组合框在发布而不是调试时切换。您将无法访问断点,并且会产生相同的错误。我不确定英语中的正确单词和名称,因为我的工作场所所有内容都是法语
                      猜你喜欢
                      • 1970-01-01
                      • 2014-02-13
                      • 2020-09-30
                      • 1970-01-01
                      • 2016-10-16
                      • 2012-12-21
                      • 2012-06-14
                      • 1970-01-01
                      • 2012-11-08
                      相关资源
                      最近更新 更多