Visual Studio 2019 未将引用的项目添加到 deps.json

Posted

技术标签:

【中文标题】Visual Studio 2019 未将引用的项目添加到 deps.json【英文标题】:Visual Studio 2019 not adding referenced projects to deps.json 【发布时间】:2020-06-21 20:19:12 【问题描述】:

我有一个在 Visual Studio 2019 (16.4.5) 中构建的现有 WPF 应用程序,其大部分后端通用代码位于 .NET Standard 类库中。我正在尝试启动一个基于 Avalonia MVVM 的新前端,它将是跨平台的。我已成功创建并运行“Hello World”Avalonia 应用程序。但是,每当我添加对类库的任何引用时(即使我创建了一个新的 NET 标准类库,它只不过是 VS 创建的存根模板),我会收到运行时错误:

System.IO.FileNotFoundException: 'Could not load file or assembly 'xxx, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null'. The system cannot find the file specified.'

最终,我意识到 Visual Studio 没有将适当的条目添加到 deps.json。我添加到我的应用程序的任何项目引用,这些引用都不会出现在 deps.json 中。如果我构建,我可以手动添加它们 - 即

  ,
  "ClassLibrary1/1.0.0": 
    "runtime": 
      "ClassLibrary1.dll": 
    

...然后它启动就好了。但是如果我重建,VS当然会重新生成deps.json,而那些项目引用又会丢失。

为什么 VS 不能正确地将引用的项目添加到它生成的 deps.json 中?

【问题讨论】:

【参考方案1】:

解决方案是清除 nuget 的缓存(出于某种原因)...

    工具 -> NuGet 包管理器 -> 包管理器控制台,键入 dotnet nuget locals all --clear 清洁解决方案 从所有项目中删除 obj 文件夹 重建

...然后 VS 开始生成正确的、正常工作的 deps.json。

【讨论】:

这花了我几个小时才弄清楚发生了什么。我想强调必须删除 OBJ 文件夹并运行 dotnet restore - 在清除缓存之后。谢谢@Metal450 我遇到了同样的问题,只用dotnet restore 修复了它,然后全部重建。无需删除任何文件夹。

以上是关于Visual Studio 2019 未将引用的项目添加到 deps.json的主要内容,如果未能解决你的问题,请参考以下文章

Visual Studio 发布未将所有 DLL 复制到发布文件夹

Debug.WriteLine 未将输出写入 Visual Studio 2010 中的 OutputWindows

WCF 未将所有内核与 Visual Studio 2010 负载测试一起使用

如何使 Visual Studio 架构比较忽略数据库引用

visual studio2019 取消显示引用关作者更改项

visual studio 2008如何引用dll