【问题标题】:Assembly's dependent Assemblies are not copied不复制程序集的依赖程序集
【发布时间】:2016-07-27 04:28:41
【问题描述】:

我有一个场景,我有一个库,例如:SomeLibrary.dll,它引用了 System.Net.HttpSystem.Net.Http。格式化只是一个带有 Copy Local 标志 true 的示例,该程序集实际上正在消耗这两种 dll 的某些类型。

然后我创建一个新项目并添加对 SomeLibrary.dll 的引用,并带有 Copy Local 标志 true,当使用内部使用上述 2 个库的此 dll 的方法时,运行时错误说:

无法加载文件或程序集“System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或其依赖项之一。系统找不到指定的文件。

我所期望的是它应该有 SomeLibrary.dll 所依赖的依赖程序集也应该在复制的 bin 文件夹中,这没有发生。

我错过了什么吗?

更新:

为了您的信息,我可以通过将引用单独添加到这 2 个 dll 来使其工作,但想知道为什么我需要单独添加依赖于那些的 SomeLibrary.dll 2个dll。

【问题讨论】:

  • 新项目中引用了System.Net.Http和System.Net.Http.Formatting?
  • 不,它们不是只在我的主项目中引用的其他库中引用
  • 它们是否被复制到 SomeLibrary 本身的输出中?
  • 是的,它们在 SomeLibrary 的 bin 文件夹中
  • 您是在 SomeLibrary 中直接使用任何类型的 System.Net.Http 或 System.Net.Http.Formatting,还是被另一个引用的库使用?

标签: c# .net dependencies .net-assembly


【解决方案1】:

我刚刚遇到了一个非常相似的问题,我的程序集 A 依赖于程序集 B,而 B 依赖于 System.Net.Http.Formatting.dll。出于某种原因,在我的构建服务器上它没有复制 System.Net.Http.Formatting.dll 所以它在它创建的最终包中丢失了(尽管在我的情况下它不在两个项目的输出文件夹中)。它在我的开发机器上本地运行良好,并且我验证了该程序集存在于构建服务器上与我的机器上相同的位置 (C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies)。

我用this answer 解决了相关问题,即切换到使用Microsoft.AspNet.WebApi.Client NuGet 包来显式地拉入该程序集。不幸的是,我仍然不确定问题出在哪里。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多