WPF单击事件在特定构建环境下触发两次

时间:2010-07-01 05:32:59

标签: c# wpf visual-studio-2008 msbuild intermediate-language

我们正面临一个奇怪的问题。我们有一个用WPF编写的用户控件,我们在xaml文件中添加了一个click事件处理程序。在本地系统上,它按预期工作。但是当在服务器(我们有代码存储库)上生成构建时,我们注意到生成的构建有一个bug。该错误是每次为此控件生成两次click事件。我们在事件处理函数中使用OpenFileDialog来浏览图像。 我们注意到,通过VS的本地系统构建使用CSC.exe进行构建,而在服务器上我们使用MSBuild.exe。所以我们也尝试在我们的本地系统上使用MSBuild构建。但是bug不会在本地系统上重现。使用VS在服务器系统上构建代码也不会重现该错误。因此,重现错误的唯一方法是在服务器上生成自动构建。 我们尝试比较两个dll的IL代码(越野车和非越野车)。我们检查了IL代码的事件处理函数。 IL代码完全相同。

我不怀疑我们的代码,因为在任何情况下bug都不会在我们的本地系统上重现。如果您需要更多输入/详细信息,请与我们联系。

任何帮助将不胜感激。

谢谢, 米沙勒

2 个答案:

答案 0 :(得分:1)

(VS正在使用MSBuild。)

在VS中,设置

Tools \ Options \ Project and Solutions \ Build and Run \ MSBuild项目输出详细程度

到'diagnostic',然后清理项目,构建它,并从输出窗口捕获日志。

与服务器上运行的“msbuild.exe / v:diag ...”的输出进行比较。

希望能找到差距的根源。

答案 1 :(得分:0)

顺便说一句,这很容易被“修复”(解决方法)。如果从代码而不是从XAML添加按钮的单击事件处理程序,则Bug会消失:| 我相信它可能是XAML加载器中的一些MS错误。我不确定其他人是否也会这样做,但我们在2个以上的地方积极面对这个错误。缺少一个链接是在什么情况下出现错误。直到现在我们已经看到这只是按钮的情况。不知道这出现在哪里