project.assets.json的来源 - 定期丢失文件

时间:2018-01-13 16:31:34

标签: .net

我经常得到"' project.assets.json'找不到"合并时的错误,nuget包更新等等。

它已成为一种日常烦恼......不像nuget问题一样令人恼火,但它已经到了那里。

该文件的来源是什么,它有什么用途?什么消耗它?

这是一个包含更多细节的编辑:

我经常收到此错误:

  

C:\ Program Files \ dotnet \ sdk \ 2.1.4 \ Sdks \ Microsoft.NET.Sdk \ build \ Microsoft.PackageDependencyResolution.targets(167,5):错误:资产文件' D:\ test \ OBJ \ project.assets.json'没有针对.NETFramework,Version = v4.7 / win7-x64'的目标。确保恢复已经运行,并且您已经包含了' net47'在项目的TargetFrameworks中。您可能还需要包含' win7-x64'在您的项目的RuntimeIdentifiers中。

然后,当我查看项目依赖项时,我看到了:

dependencies

即使是解决方案中的其他项目似乎也找不到。

Visual Studio真的想确保我拥有NET47,因为如果我只有一次,它会再次添加它:

enter image description here

路径也没有意义:

enter image description here

但没有费心去修理它,VS并不关心我输入的内容..想知道为什么这里还有一个字段。

感觉就像.NET Core的引入一样,所有内容都非常奇怪地与UI不一致,因为它不再与后台运行的东西相匹配。

该项目是两个带有.NET47框架的.NET47库+ 1个.NET核心库。

这个视线:

enter image description here

每天都会发生

,因为许多不同的项目都包含了相同的lib,所有项目都以某种方式更新它。

也:

enter image description here

已安装软件包,但它们并未同时找到。

删除软件包并将其添加回来可以暂时解决问题。

可能导致此错误的原因是什么?

2 个答案:

答案 0 :(得分:2)

听起来像是一个或多个.csproj文件的问题。

AFAIK project.assets.jsondotnet restore的输出。此文件类似于package-lock.json中的npm。您看到的错误表明dotnet restore无法运行或无法找到目标框架的正确包。

Visual Studio的框架定位UI在大多数情况下跨平台工作时都没用,因此我建议您了解SDK风格的csproj格式并使用单独的文本编辑器进行手动编辑。它比以前版本的msbuild风格的csproj简单。

我还建议阅读https://docs.microsoft.com/en-us/dotnet/standard/frameworks#how-to-specify-target-frameworks,看看你的csproj是否偏离了预期值。

答案 1 :(得分:0)

就我而言,我必须从 myproject.csproj 文件中删除以下行。

<BaseIntermediateOutputPath>mypath\obj\</BaseIntermediateOutputPath>

显然,中间版本的一些文件被复制到该文件夹​​中,但其他文件仍然放置在默认文件夹中,无论设置如何。删除该行会将所有文件放在默认文件夹中,并且构建不再出现该错误。