为什么项目依赖性会进行到顶部汇编

时间:2012-09-25 13:35:21

标签: .net visual-studio-2012

我有一个包含三个项目的Visual Studio 2012解决方案。结构的简单依赖图是:

  • ConsoleUI
    • 子项目
      • Newtonsoft.Json.dll
      • RestSharp.dll
      • ...
    • ...

我遇到的问题是在编译ConsoleUI时,RestSharp没有复制到输出,但是Newtonsoft.Json在我的应用程序中导致运行时错误。

我已经检查过Sub Local在项目属性中将Copy Local设置为true。

我做了一个完整的清洁和构建无济于事。

如果没有手动在ConsoleUI中包含所需的程序集,是否有人能想到解决方案?

2 个答案:

答案 0 :(得分:2)

这听起来像是MSBuild中长期存在的行为。在构建ConsoleUI时,实际上在本地复制的程序集是基于:

计算的
  • 项目的主要参考资料(在本例中为SubProject)
  • 从主要引用到其引用的任何编译器检测到的引用(在这种情况下,正在检测SubProject - > Newtonsoft.Json,但* - > RestSharp不是)。

解决这个问题的两种方法是:

  1. 将一个显式调用从SubProject添加到RestSharp(因为任何其他DLL不在您的控制范围内),编译器无法忽略。这可能并不理想,因为它是一次性代码。
  2. 将RestSharp设置为ConsoleUI的主要参考。

答案 1 :(得分:0)

清理项目,删除对RestSharp的所有引用,关闭Visual Studio,MManually删除bin& obj文件夹。然后重新启动项目并添加Nuget Package Reference:它肯定会解决您的问题。