C# 在实验实例中运行时加载的过期项目程序集

C# 在实验实例中运行时加载的过期项目程序集,c#,visual-studio-2010,dll,resharper,C#,Visual Studio 2010,Dll,Resharper,我在VisualStudio2010中有两个C#项目,A和B。项目A是一个类库。项目B是一个引用项目a(ProjectReference)的ReSharper插件项目。当我在实验实例中运行项目A时,这两个项目都编译并处理了属性 现在,最近我在项目a中重命名了一个带有一些扩展方法的静态类。这两个项目仍然可以编译。但是当我运行ProjectB时,我得到了一个新类名的TypeLoadException。当我重新更改类名时,一切又恢复正常 我的猜测是,项目B是根据新代码编译的,但运行时使用的是过时的dl

我在VisualStudio2010中有两个C#项目,A和B。项目A是一个类库。项目B是一个引用项目a(ProjectReference)的ReSharper插件项目。当我在实验实例中运行项目A时,这两个项目都编译并处理了属性

现在,最近我在项目a中重命名了一个带有一些扩展方法的静态类。这两个项目仍然可以编译。但是当我运行ProjectB时,我得到了一个新类名的TypeLoadException。当我重新更改类名时,一切又恢复正常

我的猜测是,项目B是根据新代码编译的,但运行时使用的是过时的dll。我尝试了一切,从清除、过度重建到重新启动,但都无济于事。我还手动检查了项目a的新dll是否放置在项目B的bin/Debug文件夹中,情况就是这样。在构建项目A之后,我手动复制了dll。问题仍然存在

现在,我问自己,在运行实验实例之前,是否存在将DLL复制到的另一个位置。是这样吗?如果有,去哪里?还有其他地方可以形成旧版本吗?或者甚至有什么完全不同的东西会导致这个问题


提前谢谢

好的。您引用了DLL还是项目?在VisualStudio解决方案中,您可以引用项目。如果您在项目B中引用项目A,那么B应该始终使用项目A中的最新代码。

我自己设法解决了这个问题,这要归功于Google上正确的关键字(MissingMethodException和ProjectReference),这让我找到了解决相同症状的方法。在我的例子中,导致问题的不是GAC,而是下的缓存程序集

C:\Users\{name}\AppData\Local\Microsoft\VisualStudio\10.0Exp\
这是实验实例的所有程序集所在的位置。这里有一个过时的VsExtension,它依赖于项目A,其中有一个加载的项目A的过时副本。由于已加载程序集的副本(具有相同版本),因此跳过了从项目引用加载新版本

因此,问题最终是由从我的解决方案中删除扩展引起的。从这一点上说,扩展不再由VS更新,但它也并没有被删除!经验教训:在对基础结构进行重大更改后,您可能希望删除上述路径下的所有缓存程序集


谢谢大家的帮助

您是否尝试过将DLL从项目A重新引用到项目B中?是的,我这样做了。在重建之前,重建之后,以及清除和构建之间…你所说的ReSharper项目是什么意思?它是一个ReSharper插件吗?插件现在坏了吗?是的,它是一个ReSharper插件。你说的破碎是什么意思?正如我所说,它可以编译,但当它运行它时,它抛出一个TypeLoadException。