5

我的朋友刚刚给我发了一个 VS2010 项目,其中包含 2 个解决方案:一个带有一个 CPP 文件,另一个带有 C# WPF 项目(一个 XAML 和一个 CS)的解决方案。使用 VS2010 在他的计算机上一切正常。当他构建并执行项目时,XAML 主窗口按预期显示。

当我尝试在我的计算机上对 VS2012 执行相同操作时,构建项目没有问题。但是,当我运行它时,什么也没有发生。我在 C# 代码中添加了一些断点,我意识到代码可以运行,但窗口从未出现。因此,一旦代码执行完毕,应用程序就会退出,而不是在 XAML 界面中等待用户输入。

我以前从未遇到过这个问题,通常从 VS2010 到 VS2012 效果很好。在这里,一切似乎都正常工作......除了现在在运行项目时显示的 XAML 窗口,这很烦人。

有没有人知道那里发生了什么?我可能在这里遗漏了一些真正重要的东西,但我没有看到解决方案或项目属性中的任何设置实际上可以帮助我确保在我启动项目时运行 XAML 窗口。

4

1 回答 1

0

需要注意的一件事是 4.5 编译器更改了 foreach 循环中 lambda 的语义,因此您的应用程序可能会遇到这种情况。见这里:https ://connect.microsoft.com/VisualStudio/feedback/details/732657/c-5-compiler-doesnt-respect-the-semantics-of-the-foreach-range-variable-when-langversion-5

基本上,如果你有这样的事情:

List<Action<int>> actions = new List<Action<int>>();
foreach (var x in new[] { 10, 20, 30 })
{
   actions.Add(() => Console.WriteLine("x = {0}", x);
}

actions.ForEach(a => a());

根据是用 4.0 还是 4.5 编译的,会给出不同的结果。我们有点绊倒了,因为我们的构建机器仍然是 4.0,我们将开发机器升级到 VS 2012。

于 2012-10-25T12:20:44.847 回答