当DLL位于GAC(生产中)时,PDB和.NET Framework调试控制ini文件

当DLL位于GAC(生产中)时,PDB和.NET Framework调试控制ini文件,.net,visual-studio-debugging,gac,pdb-files,.net,Visual Studio Debugging,Gac,Pdb Files,出于各种原因,我们的所有组件都部署在GAC中,包括客户端(winforms)和服务器(由WCF windows服务托管)机器。我们使用VIsual Studio 2013/.Net 4.5.1 我们没有在任何地方部署或存储PDB,我知道这是一个错误。我们现在正在考虑纠正这一点,因此为了提高我们的异常跟踪性和调试目的,我们: 在我们的msbuild过程中,使用pdbonly和optimize true生成PDB,并安全地存储它们,目前还不确定是使用符号服务器,还是将其与二进制文件一起存储 将DL

出于各种原因,我们的所有组件都部署在GAC中,包括客户端(winforms)和服务器(由WCF windows服务托管)机器。我们使用VIsual Studio 2013/.Net 4.5.1

我们没有在任何地方部署或存储PDB,我知道这是一个错误。我们现在正在考虑纠正这一点,因此为了提高我们的异常跟踪性和调试目的,我们:

  • 在我们的msbuild过程中,使用pdbonly和optimize true生成PDB,并安全地存储它们,目前还不确定是使用符号服务器,还是将其与二进制文件一起存储

  • 将DLL和PDB部署到GAC(C:\Windows\Microsoft.NET\assembly\GAC_32…)中的生产环境中,以获取堆栈跟踪中的行号。不确定这是否值得,因为优化通常会改变行号。如果有人对此有任何评论,那就太好了,但目前我们有很长的方法,没有关于行号的线索会消耗时间:-)

  • 我们还部署了一些powershell脚本来生成INI文件,以便在需要时禁用/启用优化,如前所述。因此,我们的计划是,如果我们的客户发现错误,那么我们可以关闭优化,并在需要时获得正确的行号

  • 除此之外,我们还使用procdump-e1xxxx指导我们的客户在开发中遇到难以重现的异常时生成一个小型转储

我的问题:

我知道将PDB和INI文件复制到DLL所在的文件夹(GAC中)看起来不太正确。所以那么我们把这些放在哪里呢?我还没有找到任何解决方案,所以PDB和INI文件都是在生产中提取的


我也在MS论坛上发布了这篇文章,如果有人回答,我会添加交叉引用。。。但是我已经搜索了几个小时,没有找到任何信息

在咨询了微软的人员之后,我们似乎做了正确的事情,即将pdb和ini文件放在gac文件夹中是正确的

仅供参考,无论何时使用exception.stacktrace,都会加载pdb(即性能惩罚)

希望有帮助

资料来源:
(请参阅文章底部的注释)

这些文件与使用DLL.Ummm的EXE文件属于同一目录,您确定吗?我刚试过,但没用。只有当PDB位于gac内的同一文件夹中时,它才对我有效。也许我做错了什么…请参阅MSDN文章。谢谢,但我是在文章底部提出问题的人。:-)