【发布时间】:2016-04-12 19:28:40
【问题描述】:
如何部署 .NET exe 但仍使用其他位置的 pdb 文件?我担心将它与 exe 放在同一位置可能会导致最终用户意外删除 pdb。但是,我们希望在用户遇到错误时查看错误详细信息(例如模块、行号)。如果没有 .pdb 有另一种获取此信息的方法,请告诉我。提前致谢!
【问题讨论】:
如何部署 .NET exe 但仍使用其他位置的 pdb 文件?我担心将它与 exe 放在同一位置可能会导致最终用户意外删除 pdb。但是,我们希望在用户遇到错误时查看错误详细信息(例如模块、行号)。如果没有 .pdb 有另一种获取此信息的方法,请告诉我。提前致谢!
【问题讨论】:
您可以通过在应用程序启动时设置环境变量 _NT_SYMBOL_PATH 来实现。搜索调试符号时,将检查此环境变量(如果有)的路径以查找 .pdb 文件。将您的符号放在某个文件夹中(假设是“%localappdata%\MyApp\Symbols”),然后执行:
var symbolsPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "MyApp", "Symbols");
Environment.SetEnvironmentVariable("_NT_SYMBOL_PATH", symbolsPath);
【讨论】:
This answer 描述了一种在没有 pdb 的情况下通过一些构建时间准备来获取该信息的方法。
我建议用户不要对您安装应用程序的文件夹(例如:Program Files?)拥有删除权限,如果他们有,或者如果他们是管理员,没有什么能阻止他们为此删除 pdb 或 exe。
【讨论】: