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

时间:2011-06-05 22:59:09

标签: c# silverlight-4.0

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

  

无法加载文件或程序集   'System.Windows,版本= 2.0.5.0,   文化=中性,   PublicKeyToken = 7cec85d7bea7798e'或   其中一个依赖项。系统   找不到指定的文件

但只需刷新页面,就可以解决了!

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

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

4 个答案:

答案 0 :(得分:7)

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

答案 1 :(得分:1)

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

dll的路径是:

<强> C:\的Windows \ Microsoft.NET \组件\ GAC_MSIL \ System.Windows.Presentation \ v4.0_4.0.0.0__b77a5c561934e089

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

答案 2 :(得分:1)

检查您是否有像这样的代码

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);
                        }
                    }
                }
            }

答案 3 :(得分:1)

  

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

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

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