我有一个使用.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”。运行此命令时,在一些较旧的项目中出现此错误。
MSB4020: The value "" of the "Project" attribute in element <Import> is invalid.
问题是,我现在该怎么办?
答案 0 :(得分:3)
我终于发现,在还原Paket之后,我只能在新的.NET Core项目上运行此命令,从而避免了解决方案中其他项目的错误。
dotnet restore TheProject
然后缺少的文件在编译之前生成,其余的构建脚本运行完毕。
PS(编辑): 这对我来说不是一个完美的解决方案,因为我必须为解决方案中的每个.NET Standard和.NET Core项目将该行添加到构建脚本中。不得不维护这样的脚本并不理想。因此,我将研究摆脱MSB4020错误必须采取的措施。在此之前,这是一个很好的解决方法。
答案 1 :(得分:0)
我建议您尝试如下更改项目文件(.fsproj):
Failed to connect to non-global ctrl_ifname: (nil) error: No such file or directory
Import Project="$(FSharpTargetsPath)"
Condition="Exists('$(FSharpTargetsPath)')"