c# - MSB4020 : The value "" of the "Project" attribute in element <Import> is invalid

标签 c# f# .net-core paket

我有一个 .NET Framework 项目的解决方案,主要是 F#,然后是 C#。我使用 Paket 而不是 NuGet 进行数据包管理。现在,我已将我的第一个 .NET Standard 2.0 库添加到此解决方案。

当我运行我的构建脚本时,它运行另一个构建脚本,它调用 devenv 进行编译,出现一个错误,指出项目的 obj\project.assets.json 文件丢失。它实际上是在编译时生成的,但前提是编译了其他项目之一。那为什么报失踪有点奇怪。

如果我只运行内部脚本,就没有问题。如果我打开VS并编译,就没有问题。有趣。

我不太确定这些东西是如何工作的 - 或者不是。但是在谷歌搜索之后,似乎这个文件应该在用 devenv (Visual Studio) 编译之前放在那里,而不是由 devenv 放在那里。

我运行了 Paket 恢复。这并没有产生缺失的 project.assets.json。

我用谷歌搜索“dotnet restore”。运行它时,我在几个较旧的项目上遇到了这个错误。

MSB4020: The value "" of the "Project" attribute in element <Import> is invalid.

那么问题是,我现在该怎么办?

最佳答案

我终于想通了,在 Paket 恢复之后,我可以只在新的 .NET Core 项目上运行这个命令,从而避免了解决方案中其他项目的错误。

dotnet restore TheProject

然后在编译之前生成了丢失的文件,其余的构建脚本运行完成。

附言(编辑): 这对我来说不是一个完美的解决方案,因为我必须为解决方案中的每个 .NET Standard 和 .NET Core 项目将该行添加到我的构建脚本中。必须像那样维护脚本并不理想。因此,我将研究如何消除 MSB4020 错误。在此之前,这是一个很好的解决方法。

关于c# - MSB4020 : The value "" of the "Project" attribute in element <Import> is invalid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51188189/

相关文章:

c# - Docker 中的剧作家不工作 : Microsoft. Playwright.PlaywrightException:可执行文件不存在

c# - C# 中的类型/命名空间别名约定

c# - 排序大小的功能问题

c# - 具有两个短语的多阶段方法 - Elasticsearch

c# - Console.WriteLine 在大量二进制零之后不显示行

.net - [F#]; 【编译错误】;无法编译任何 F# 程序

F#:没有默认构造函数作为类型参数的类?

asynchronous - F# 在另一个线程上运行阻塞调用,在异步工作流中使用

.net-core - 获取 .NET Core Worker 服务 CommandLineConfigurationProvider 参数

.net - Resharper 未运行 xUnit 测试