为什么Msbuild不复制Microsoft.AspNet.WebApi.Client引用的Newtonsoft.Json.dll?

为什么Msbuild不复制Microsoft.AspNet.WebApi.Client引用的Newtonsoft.Json.dll?,msbuild,Msbuild,我的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:C

我的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=30AD4FE6B2A6EED'或其依赖项之一。这个 系统找不到指定的文件

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

string json = JsonConvert.SerializeObject(new Something()); 
有人能描述一下为什么它以前没有被复制吗

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


我在Alex的博客帖子下发表了评论

当间接依赖项来自NuGet包(Microsoft.AspNet.WebApi.Client和Newtonsoft.Json)时,它对我不起作用。但是中描述的技巧解决了这个问题。我认为它使用了一种更合适的间接依赖检测方法

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

关于dll未被复制的原因,它已被缩小为MSBuild问题(或更多,因为有太多相关报告),Microsoft声称不会在Connect上修复该问题