【问题标题】:Why Msbuild does not copy Newtonsoft.Json.dll referenced by Microsoft.AspNet.WebApi.Client?为什么 Msbuild 不复制 Microsoft.AspNet.WebApi.Client 引用的 Newtonsoft.Json.dll?
【发布时间】:2016-05-21 22:17:37
【问题描述】:

我的 web projectA 引用了我的 projectB,它引用了 Microsoft.AspNet.WebApi.Client,它引用了 Newtonsoft.Json 程序集。它没有在其他任何地方引用。问题是,在我的部署服务器上,Newtonsoft.Json 运行后没有复制到bin 目录

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\MSBuild.exe .\src\path.to.Web.projectA.csproj /t:Rebuild /p:Configuration=Release

它最终打破了这个例外:

FileNotFoundException: 无法加载文件或程序集 'Newtonsoft.Json,版本=7.0.0.0,文化=中性, PublicKeyToken=30ad4fe6b2a6aeed' 或其依赖项之一。这 系统找不到指定的文件。

我已经通过向 projectB 添加存根代码解决了这个问题:

string json = JsonConvert.SerializeObject(new Something()); 

有人能描述一下为什么它以前没有被复制吗?

注意。这些问题似乎没有回答问题或已过时或我错过了什么?

【问题讨论】:

    标签: msbuild


    【解决方案1】:

    我在 Alex 的博文下发表了评论,

    当间接依赖来自 NuGet 包(Microsoft.AspNet.WebApi.Client 和 Newtonsoft.Json)时,它对我不起作用。但是http://www.paraesthesia.com/archive/2014/05/09/recursively-copying-indirect-project-dependencies-in-msbuild.aspx/ 中描述的技巧解决了这个问题。我认为它使用了更合适的间接依赖检测方法。

    如果您遵循该解决方案,则根本不需要使用存根。

    关于为什么不复制 dll,它已被缩小为 MSBuild 问题(或更多,因为相关的报告太多),微软声称不会在 Connect 上修复,

    https://connect.microsoft.com/VisualStudio/feedback/details/797034/msbuild-handles-direct-and-transitive-references-differently-for-unused-assembly-references

    【讨论】:

      猜你喜欢
      • 2014-09-13
      • 1970-01-01
      • 1970-01-01
      • 2020-06-20
      • 1970-01-01
      • 2012-05-16
      • 2015-01-31
      • 2021-03-20
      • 1970-01-01
      相关资源
      最近更新 更多