【问题标题】:Deploy .exe in separate location from .pdb将 .exe 部署在与 .pdb 不同的位置
【发布时间】:2016-04-12 19:28:40
【问题描述】:

如何部署 .NET exe 但仍使用其他位置的 pdb 文件?我担心将它与 exe 放在同一位置可能会导致最终用户意外删除 pdb。但是,我们希望在用户遇到错误时查看错误详细信息(例如模块、行号)。如果没有 .pdb 有另一种获取此信息的方法,请告诉我。提前致谢!

【问题讨论】:

    标签: .net exe pdb-files


    【解决方案1】:

    您可以通过在应用程序启动时设置环境变量 _NT_SYMBOL_PATH 来实现。搜索调试符号时,将检查此环境变量(如果有)的路径以查找 .pdb 文件。将您的符号放在某个文件夹中(假设是“%localappdata%\MyApp\Symbols”),然后执行:

    var symbolsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyApp", "Symbols");
    Environment.SetEnvironmentVariable("_NT_SYMBOL_PATH", symbolsPath);
    

    【讨论】:

      【解决方案2】:

      This answer 描述了一种在没有 pdb 的情况下通过一些构建时间准备来获取该信息的方法。

      我建议用户不要对您安装应用程序的文件夹(例如:Program Files?)拥有删除权限,如果他们有,或者如果他们是管理员,没有什么能阻止他们为此删除 pdb 或 exe。

      【讨论】:

      • 不幸的是,他们有读/写访问权限,并且无法更改。我知道这些文件可以从安全副本中恢复,但如果可能的话,我们甚至不希望最终用户可以看到 .pdb,以避免混淆。
      猜你喜欢
      • 2017-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多