未知的生成错误无法解析对System.Windows的依赖性

时间:2011-08-31 07:17:11

标签: c# wpf silverlight

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

  1. 无法解析System.Interactivity.dll。我安装了Blend 4 SDK,问题已修复。

  2. 未知的构建错误 - 无法解析对System.Windows的依赖

  3. 现在,每当我尝试构建项目时,我在解决方案中的两个项目中都会出现以下错误,并且在谷歌搜索后无法找到解决方案。

      

    无法解析对程序集'System.Windows的依赖,   Version = 2.0.5.0,Culture = neutral,PublicKeyToken = 7cec85d7bea7798e'   因为它还没有预装。使用ReflectionOnly API时,   依赖程序集必须预先加载或按需加载   ReflectionOnlyAssemblyResolve事件。

5 个答案:

答案 0 :(得分:45)

我收到了另一个(非GAC,自定义)程序集的错误消息。

就我而言,情况如下:

  • 程序集X包含A类
  • 程序集Y包含继承自A
  • 的B类
  • 程序集Z包含B类的data template

Y引用X,Z引用Y。

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

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

答案 1 :(得分:18)

该错误通常意味着您在WPF项目中添加了对Silverlight程序集的引用 - 两者无法共存。

请参阅:Errors when referencing Silverlight class library from WPF application

答案 2 :(得分:1)

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

  • 这是我的错误: v4.0.30319 \ Microsoft.WinFx.targets(268,9):错误MC1000:未知的构建错误,'无法解析对程序集的依赖性' Microsoft.Data.Schema',...
  • 在我的.csproj文件中,我使用关键字' Microsoft.Data.Schema'
  • 标识了参考线
  • 我删除了该行,我的项目能够再次构建。

希望它会帮助别人

答案 3 :(得分:0)

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

我在处理WPF项目时遇到了同样的问题。考虑到答案中提出的X,Y,Z关系,在我的例子中,当我将属性从X绑定到Z中的数据模板使用的View时,就会出现这种情况。所以,并非所有情况都会发生这种情况。由Z引用的程序集,但仅限于在Z视图中公开其类型的程序集。在我的例子中,我将ComboBox的SelectedItem绑定到Z中声明的enum

您可以将这些类型重构为对象,如果您确实希望保留引用,问题就会消失,特别是如果您使用MVVM。此外,在ViewModel中,我公开了包装已使用对象属性的属性,因为它们可能不是View ready。

希望这有帮助。

答案 4 :(得分:0)

如果有人遇到同样的问题,我将回答这个老问题。

我最近正在处理旧版程序,但出现此错误。解决方案并不容易。

问题

所引用的一个NuGet软件包是为一堆内部库创建的,并存储在内部NuGet存储库中。

由于Project文件中包含所有NuGet引用,因此直接将这些应用程序在VS2013上编译良好。

将这些引用更改为(不支持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

新的nupkg结构:

Package.1.0.1.nupkg
    - lib
        - net45
            - Library.dll
        - sl4.0
            - Library.dll