MSB4020:元素<Import>中的“ Project”属性的值“”无效

Ben*_*erg 5 c# f# .net-core paket

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

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

如果我只运行内部脚本,那没有问题。如果我打开VS并进行编译,那没有问题。滑稽。

我不太确定这些东西是如何工作的-否。但是在谷歌搜索之后,似乎应该在使用devenv(Visual Studio)进行编译之前将该文件放置在此处,而不是使用devenv放置在此处。

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

我用谷歌搜索了“恢复dotnet”。运行此命令时,在一些较旧的项目中出现此错误。

MSB4020: The value "" of the "Project" attribute in element <Import> is invalid.
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*erg 3

我终于发现,在 Paket 恢复后,我只能在新的 .NET Core 项目上运行此命令,从而避免解决方案中其他项目的错误。

dotnet restore TheProject
Run Code Online (Sandbox Code Playgroud)

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

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