我发布这个基本上是为了继续一个已关闭的线程:
“尝试在 VS 2012 中打开 VS 2010 项目时出错:类型 Universe 无法解析程序集”,作者: user1766173
我已经深入研究了这个问题并缩小了一些范围,因此希望可以恢复讨论。
我正在使用 VS 2012(我没有 2010 可以比较)。我的解决方案"TWConsole"
在周五运行良好,但到周二却不行。两个版本都编译运行良好,但在设计器中,项目中的任何 XAML 文件都无法打开而不会崩溃。但是,从同一解决方案中的不同项目打开 XAML 可以正常工作。我在谷歌上搜索的有关此问题的所有内容都导致有人处理第 3 方集会。
但是,在我的情况下,无法解析的程序集是我自己的——由构建生成的程序集。
有趣的是,我发现通过用上周一构建的“秘密”替换 bin\Debug 文件夹中的 TWConsole.exe,一切正常!...也就是说,直到我重建解决方案,并且该 exe 被替换,然后 XAML 设计器开始崩溃。
所以有一些与我添加的新代码有关的东西以某种方式“感染”了主程序集。与此同时,在任何人都可以用解决方案来拯救我之前,我将从最后一个可行的解决方案开始,一次只添加一行代码,直到问题浮出水面,以便查明确切的原因。
谢谢
编辑:我已经能够将问题的根源缩小到一行代码:
public static bool GetFavWashPkgs(out List<WashPkg> wPkgs)
如果我删除“out”关键字,然后编译,设计器崩溃问题就解决了。同样适用于“ref”关键字——在这种情况下也是一个禁忌。我已经尝试了一个小时,使用测试类和测试函数在更基本的测试中重新创建此异常,但无济于事。我只能报告这个“敏感”函数被重载,自定义类 WashPkg 具有属性 [serializable()],并且该函数所在的类是静态的。如果我修改函数声明,使 List 的类型是 int 而不是 WashPkg,问题也解决了。所以在这一点上,为什么设计师不喜欢这个函数声明仍然是个谜。