是什么导致Visual Studio无法正确加载程序集?

是什么导致Visual Studio无法正确加载程序集?

What causes Visual Studio to fail to load an assembly incorrectly?

我一直很高兴地在一个体面的解决方案(刚好超过13k LOC,5个项目)上进行编码,该解决方案利用Linq到Sql进行数据访问。突然间,我执行了正常的构建,并且收到了甜美,甜蜜的模棱两可的消息:??

错误1由于C:\\\\ xxx \\\\ xxx.dbml中的验证错误而导致构建失败。打开文件并解决错误列表中的问题,然后尝试重建项目。 C:\\\\ xxx \\\\ xxx.dbml

我好几个星期都没有接触过我的数据访问层,也没有对DBML文件进行任何调整。我尝试了许多繁琐的技巧,例如重新创建布局文件,进行复制并将现有文件重新添加到项目中,然后再重新启动Visual Studio(以防某些文件级损坏);全部无济于事。

我忘了穿Visual Studio Skills 5护身符,所以我开始四处搜寻,发现唯一有意义的答案是重置包,因为Visual Studio无法正确加载程序集。实际上,在运行" devenv.exe / resetskippkgs"之后,我能够将dbml文件添加回DAL项目并重建解决方案。

我很高兴它已解决,但我也希望从这次经历中获得更深刻的理解。有谁知道如何或为什么在Visual Studio 2008中发生这种情况?

新编辑:2008年10月30日
这不只是我发生的事情。
Rich Strahl最近在他的"网络日志"中写道了同样的经历。他链接到另一个具有相同问题的博客,并使用了相同的操作。

自从这篇原始文章发表以来,我也遇到过几次这个问题,这让我认为这不是一个随机的问题。如果有人找到了明确的答案,请发表。


当尝试在第二个解决方案(安装程序)中编译数据访问层时,我也收到此错误。我要做的是在dbml文件上运行"定制工具",并且做到了这一点。

dbml文件中确实没有需要纠正的错误。

我的理论是Visual Studio缓存dbml文件的编译版本,并且该缓存对于其他解决方案无效。我猜运行/ resetskippkgs与重新编译dbml文件具有相同的作用。

反正还没有解决办法?


在为Visual Studio 2008安装Phalanger之后,我尝试创建一个新的PHP WinForms应用程序。项目创建失败,并显示类似的错误消息,提示无法加载所需的DLL(无法加载文件或程序集...)。在Visual Studio 2008命令Promtp中运行devenv.exe / resetskippkgs命令可立即解决此问题。

感谢您的信息。


我在VS 2010中有相同的问题(由于dbml文件中的验证错误,构建失败)。我通过查看dbml文件的设计器视图并将表稍微拖动到其他位置来解决此问题,以便刷新dbml布局等文件。这似乎可以解决问题,但这是一个奇怪的问题。


TBH,我曾有过几次这样的情况,其中文件"似乎发疯了"。但是,经调查发现,文件已经以某种方式,形状或形式发生了变化。(例如,有时可以更改通过在无意间更改似乎无关的属性来对文件进行创建。

我认为有太多可能真正导致此问题的问题,并且基于该问题已得到解决的事实,似乎找不到答案。.


推荐阅读