C# 未知生成错误无法解析对系统的依赖关系。Windows

C# 未知生成错误无法解析对系统的依赖关系。Windows,c#,wpf,silverlight,C#,Wpf,Silverlight,我刚刚下载了的源代码,并试图构建解决方案。我最初有两个问题- 无法解析System.Interactivity.dll。我安装了Blend 4 SDK,这个问题已经解决 未知生成错误-无法解析对System.Windows的依赖关系 现在,每当我尝试构建项目时,我在解决方案中的两个项目中都会遇到以下错误,在谷歌搜索之后,我一直无法找到解决方案 无法解析对程序集“System.Windows”的依赖关系, 版本=2.0.5.0,区域性=中性,PublicKeyToken=7cec85d7bea77

我刚刚下载了的源代码,并试图构建解决方案。我最初有两个问题-

  • 无法解析System.Interactivity.dll。我安装了Blend 4 SDK,这个问题已经解决

  • 未知生成错误-无法解析对System.Windows的依赖关系

  • 现在,每当我尝试构建项目时,我在解决方案中的两个项目中都会遇到以下错误,在谷歌搜索之后,我一直无法找到解决方案

    无法解析对程序集“System.Windows”的依赖关系, 版本=2.0.5.0,区域性=中性,PublicKeyToken=7cec85d7bea7798e' 因为它没有预加载。使用ReflectionOnly API时, 从属程序集必须通过预加载或按需加载 ReflectionOnlyAssemblyResolve事件


    该错误通常意味着您已经在WPF项目中添加了对Silverlight程序集的引用—这两者不能共存


    请参阅:

    我已收到另一个(非GAC、自定义)程序集的此错误消息

    就我而言,情况如下:

    • 程序集X包含类A
    • 程序集Y包含从A继承的类B
    • 程序集Z包含类B的
    Y参照X,Z参照Y

    错误消息指向Z中引用B的数据模板中的行,并指出无法加载X


    解决方案是让Z也引用X。显然,编译器无法自行解析该可传递引用以加载所需的程序集。

    在[projectName].csproj文件中,您可以识别不可解析的依赖项,并在再次添加之前将其删除

    • 这是我的错误: v4.0.30319\Microsoft.WinFx.targets(268,9):错误MC1000:未知生成错误,“无法解析对程序集“Microsoft.Data.Schema”的依赖关系
    • 在.csproj文件中,我用关键字“Microsoft.Data.Schema”标识了参考线
    • 我删除了这一行,我的项目可以重新构建

    希望它能对其他人有所帮助

    除了建议添加对编译器错误指示的程序集的引用的答案之外,我还想添加一些信息

    我在处理WPF项目时也遇到了同样的问题。考虑到他在回答中给出的X、Y、Z关系,当使用Y中的
    DataTemplate
    DataType
    将类型为X的属性绑定到
    DataTemplate
    时,会出现问题。因此,这并不是所有由Z引用的程序集都会发生,而是那些仅在视图中公开其特定类型的程序集。在我的例子中,我将
    组合框的
    SelectedItem
    绑定到X中声明的
    enum
    属性

    您可以将这些类型重构为对象,如果您真的希望保留引用,特别是在使用MVVM的情况下,那么问题就不会出现了。此外,当您将模型类型正确地包装到ViewModel中时,问题就会自行解决,因为这会生成显式代码,帮助VisualStudio找出所需的程序集


    希望这能有所帮助。

    我会仔细考虑并回答这个老问题,以防有人遇到同样的问题

    我最近在做一个遗留程序,出现了这个错误。解决办法并不容易看出

    问题

    引用的一个NuGet包是为一组内部库创建的,并存储在内部NuGet存储库中

    应用程序在VS2013上编译得很好,因为项目文件中的所有NuGet引用都直接指向库

    当这些引用更改为(不支持HintPath)时,许多NuGet包都不是根据nuspec创建的。没有lib文件夹

    这些包是按照规范重新制作的,但是有几个包中包含了旧的Silverlight库。这些库导致了错误

    解决方案

    在nuspec之后,lib文件夹创建了子文件夹:net45和sl4。NET4.5和Silverlight4.0

    当用新的包替换包时,构建工作正常。无论项目文件版本如何

    TL;DR

    旧nupkg结构:

    Package.1.0.0.nupkg
       - Library.Net40.dll
       - Library.Sl4.dll
    
    Package.1.0.1.nupkg
        - lib
            - net45
                - Library.dll
            - sl4.0
                - Library.dll
    
    新的nupkg结构:

    Package.1.0.0.nupkg
       - Library.Net40.dll
       - Library.Sl4.dll
    
    Package.1.0.1.nupkg
        - lib
            - net45
                - Library.dll
            - sl4.0
                - Library.dll
    

    我曾经在解决方案中犯过类似的错误。在错误消失之前,我有时甚至需要重新构建它两次。也许它能工作?也许做一个
    构建->清洁解决方案也能有所帮助。你安装了Silverlight吗?很难说,但我认为这可能是问题所在。。。。这很奇怪,因为poshconsole似乎不需要Silverlight。我遇到了相同的错误(尽管对于自定义程序集,不是GAC的默认程序集),但没有更改任何有关引用的内容。编辑-没关系,看起来你回答了下面自己的评论。是的,这是一个不同的问题,但与您遇到的问题有着千丝万缕的联系。是的,我晚了一点找到了解决方案,并认为我会将其添加到这里,尽管这可能不是OP的原始问题,但带着相同错误消息来到这里的未来访客可能会从我们的两个响应中的任何一个中受益。这是我的问题。我正在将Silverlight dll添加到WPF项目中。也为我工作。但我不明白。通常,sssembly引用是可传递的,不是吗?@anhoppe:嗯,这要看情况而定,或者至少事情并不总是像直觉上看起来的那样。当您使用使用另一个类T的类S时,您不需要了解T(或引用其程序集)。但是,当S从T继承时,可以说,您自己也在使用T(即使您可能只是在处理S),因此需要引用T的程序集。当问题是Microsoft.ServiceFabric.Services.Remoting从服务中分离出来后缺少Microsoft.ServiceFabric.Services.Remoting时,这对我很有效