无法加载文件或程序集>’System.Windows,Version = 2.0.5.0

在第一次加载我的Silverlight应用程序时,我不断收到此错误:

无法加载文件或程序集’System.Windows,Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e’或其依赖项之一。 该系统找不到指定的文件

但只需刷新页面,它就会被解决!

它似乎是已知的Silverlight错误: http : //connect.microsoft.com/VisualStudio/feedback/details/464190/silverlight-compilation-problem-in-team-build-environment

他们建议解决方法,但在我的情况下不起作用。

那么实际上’System.Windows’程序集被复制到输出目录解决了我的问题。 只需确保将其复制到您将要执行的应用程序,而不仅仅是Debug文件夹。 还有一个非常好的替代品,没有类似的问题: SilverUnit

检查你是否有这样的代码

Assembly assembly = Assembly.Load(assemblyName); 

如果你拥有它意味着它可能正在为其他.net框架加载不合适的assemblyName,如System.Windows

在这种情况下,您可以直接使用引用的库或从正确的assemblyName加载它像这样

 foreach (var assemblyName in Assembly.GetExecutingAssembly().GetReferencedAssemblies()) { if (assemblyName.ToString().Contains("PresentationFramework")) { Assembly assembly = Assembly.Load(assemblyName); Common.AddToLog(assembly.FullName); Type[] allTypes = assembly.GetTypes(); foreach (Type type in allTypes) { if (type.IsSubclassOf(typeof(DependencyObject))) { allControlTypes.Add(type); } } } } 

Blockquote实际上’System.Windows’程序集被复制到输出目录解决了我的问题。 只需确保将其复制到您将要执行的应用程序,而不仅仅是Debug文件夹。

在项目集的属性复制本地的参考文件夹中:您的程序集文件的true

注意:如果您的项目使用.NET 2.0,请使用.NET Framework v2.0 SP2来解决此问题

只需将此dll System.Windows.Presentation.dll的引用添加到项目中,因为您的项目要求System.Windows.dll ,它是一个包含在System.Windows.Presentation.dll中的命名空间。

dll的路径是:

C:\ WINDOWS \ Microsoft.NET \assembly\ GAC_MSIL \ System.Windows.Presentation \ v4.0_4.0.0.0__b77a5c561934e089

我确实遇到过这个问题,将其添加到我的项目中已经解决了这个问题。

谢谢,

Ankur Bhutani