.net – 当发布dll不工作但调试dll的时候
发布时间:2020-12-13 20:13:01 所属栏目:Windows 来源:网络整理
导读:在将庞大的分布式系统部署到我们的客户之后,我们遇到了一个意想不到的错误.在调查期间,我们更换组件导致错误,我们添加了一些诊断代码.我们使用的dll内置在调试模式.突然一切都奏效! 使用发行版本(使用诊断代码)替换debug dll会使其再次崩溃. 在我们的代码中
在将庞大的分布式系统部署到我们的客户之后,我们遇到了一个意想不到的错误.在调查期间,我们更换组件导致错误,我们添加了一些诊断代码.我们使用的dll内置在调试模式.突然一切都奏效!
使用发行版本(使用诊断代码)替换debug dll会使其再次崩溃. 在我们的代码中没有预编译指令,条件调试属性等.这个问题已经在两个不同的安装地点被发现,而它的工作正常. (该项目混合了C#和VB.NET,麻烦汇编是VB.NET ..,如果有任何区别) 所以问题是:在这样的情况下你做什么?一般可以是什么原因?任何关于调试此问题的建议是受欢迎的.
对于原因…好的,一些暗示的症状将有所帮助.一种可能性是你有一个方法,如Debug.WriteLine有副作用(即使它的工作).调用标有[条件(…)]的方法不会被编译,除非你有正确的符号定义 – 所以任何标记为[Conditional(“DEBUG”)]将被默认删除.
它也可能是一个编译器错误,但这不太可能(但不是不可能). 有什么症状?怎么破了 作为上述的一个例子: static string Bar { get; set; } static void Main() { Bar = "I'm broken"; Debug.WriteLine(Foo()); Console.WriteLine(Bar); } // note Foo only called in DEBUG builds static string Foo() { Bar = "I'm working"; return "mwahahah"; } 编译在DEBUG模式下,它打印“我正在工作”;编译在RELEASE模式下,它打印“我坏了”.这听起来是否相似?检查你没有直接调用任何具有副作用的调试方法.在大多数情况下,您可以通过间接修复: string foo = Foo(); Debug.WriteLine(foo); 现在它在任一模式下被调用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐
- 使用Win8进行Javascript漫游设置
- windows-8 – 在Visual Studio Simulator for Wi
- windows-8 – 如何使用data-win-bind设置元素的类
- ssh – 如何将文件从Bluemix上的Liberty文件复制
- windows-server-2008 – 当客户端断开连接时,TCP
- windows-update – WSUS替代品?
- windows – x64调用约定(堆栈)和varargs
- 在Windows / Apache上设置Python?
- windows – ruby?? win32api&structs(VerQue
- windows – 许多CAD文件的文件共享建议
热点阅读