ChatGPT解决这个技术问题 Extra ChatGPT

资产文件 obj\project.assets.json 没有目标 - VS2017

使用 Visual Studio 2017、AspNetCore 1.1.2

当我尝试在解决方案中发布(发布构建)任何项目时,突然出现以下错误:

资产文件“C:\example\obj\project.assets.json”没有“.NETFramework,Version=v4.5.2/win7-x86”的目标。确保恢复已运行,并且您已在项目的 TargetFrameworks 中包含“net452”。您可能还需要在项目的 RuntimeIdentifiers 中包含“win7-x86”。

已签入 project.assets.json 文件,我有:

"targets": {
  ".NETFramework,Version=v4.5.2": {

"runtimes": {
  "win7-x86": {
    "#import": []
  }

在 *.csproj 文件中,我有:

  <PropertyGroup>
      <TargetFramework>net452</TargetFramework>
  </PropertyGroup>

  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|AnyCPU'">
      <PlatformTarget>x86</PlatformTarget>
  </PropertyGroup> 

没有对项目中的配置进行任何更改。唯一的问题是我今天已将 VS2017 更新到最新版本,15.6.3。这会导致问题吗?

删除“C:\example\ob”文件夹并重建有帮助吗?
没有对不起同样的问题。
请澄清:.NET Framework 和 .NET Core 是两个不同的东西。您似乎根本没有在这里使用 .NET Core。
以防万一有人在遇到与我相同的问题后发现这一点:当您进行多目标时,您可能会遇到的问题之一是 .NET Standard 和 .NET Core 之间的不匹配。尽管代码在技术上兼容,但您不能让库以 .NET Standard 为目标然后使用 dotnet build -f netcoreapp2.1。您要么需要使用 -f netstandard2.0 并将其作为目标添加到资产文件中,要么切换到以 .NET Core 2.1 为目标。

D
Dale K

根据 Microsoft 博客(奇怪的是,我的帐户没有发帖权限),这不是错误,完全是由 ReSharper 引起的。如果禁用此功能,问题就会消失。

错误,一个问题:我收到了这个错误,而且我没有 ReSharper。

经过大量搜索,我找到了我的 .NET Core 项目出现错误的原因,该项目已从 1.0 升级到 2.1。

在调试或发布模式下运行我的项目时,一切正常,但是当我尝试发布到 Azure 时,我收到了该错误:

资产文件“(mikesproject)\obj\project.assets.json”没有“.NETCoreApp,Version=v2.0”的目标。确保恢复已运行,并且您已在项目的 TargetFrameworks 中包含“netcoreapp2.0”。

尽管我已经在 Project\Properties 中将 .NET Core 的版本更新为 2.1 并升级了各种 nuget 包,但有一个地方没有接受这一更改……发布配置文件。

我需要进入解决方案中的 Properties\PublishProfiles 文件夹,打开与我发布到 Azure 的方式相关的 .pubxml 文件,然后将此设置从 netcoreapp2.0 更改为 netcoreapp2.1

<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    . . . 
    <TargetFramework>netcoreapp2.0</TargetFramework>
    . . . 
  </PropertyGroup>
</Project>

可笑,嘿?

我确实希望 Microsoft 错误消息能够为此类问题的根源提供一些线索。


删除并创建了一个新的发布配置文件,然后它就起作用了!
我遇到了同样的问题,只是稍后查看版本。删除 TargetFramework 元素似乎也有效。希望我不会再遇到那个问题...
从 3.0 升级到 3.1 后,这解决了我的问题。我不得不手动将 TargetFramework 从 netcoreapp3.0 更改为 netcoreapp3.1
您甚至不必手动编辑它。您只需从“发布”屏幕本身单击“编辑”并确保目标正确。 (此时我的自动更新了目标框架。)然后单击保存,这将更新 .pubxml。奇怪的是,当 .NET 版本升级时,这不会自动发生。
将 een 旧项目从 .NET 4.6.1 升级到 .NET 4.8 时遇到问题,这解决了它:)
F
Ferro

重新启动 Visual Studio 为我解决了该错误。


从 github 更新了一个开放的解决方案,其中包括新的框架目标,这个答案在没有其他方法的情况下解决了这个问题。
这用 netcoreapp3.1;netstandard2.0 解决了我在 VS 16.8.2 中的问题
是的。应该尝试将其关闭并重新打开
关闭 VS2022 并重新打开解决方案也很有效。
有趣的是,这确实有效。
P
Paul

右键单击项目文件,然后单击卸载。然后右键单击项目并重新加载。


在我也“重建”了有问题的项目之后,这对我有用
使用 dotnet publish 和 AWS 工具时遇到了这个问题 - 这对我有用
C
CodingYourLife

在类似情况下出现此错误。这对我有帮助:Link

这是我的 .net core 3.0 项目的 *.csproj 文件中的属性组:

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFrameworks>netcoreapp3.0</TargetFrameworks>
    <RuntimeIdentifier>win-x64</RuntimeIdentifier>  <----- SOLVES IT. Mandatory Line
</PropertyGroup>

这解决了我们试图让 MSBuild 也能正常工作的问题。
k
k4st0r42

从 nuget 5.4 迁移到 nuget 5.8 解决了我的 devops 构建服务器上的问题


同样,我们的 DevOps 构建服务器使用 .NET5。在我将 NuGet.exe 从版本 5.7 升级到 5.8 后,错误得到解决。
同样在这里,5.5.1 >> 5.8。谢谢!
在我的构建服务器上升级到 Visual Studio 2019 (v16.8) 后,我开始收到此错误。使用更新版本的 nuget.exe 解决了该问题。
kayleeFrye_onDeck 的答案在这里是更好的答案,因为它提供了一篇文章的指针,该文章解释了为什么要进行升级。
如何迁移nuget版本?
E
Eyad

删除您创建的发布配置文件并创建一个新配置文件。该向导将为您放入正确的目标框架工作并再次发布。它应该可以解决问题。


当我从 2.1 升级到 2.2 时,这对我有用。
删除了整个配置文件并创建了一个新配置文件。工作。
9
9Rune5

如果您的构建脚本以 dotnet restore 开头并以 dotnet publish --no-restore 结尾,您必须确保它们都包含相同的 --runtime 参数。


T
TJ Rockefeller

对我来说,问题最终是我的一个 NuGet 提要已关闭,因此包没有正确更新。直到我直接在解决方案上运行 NuGet 包恢复时,我才看到与我的 NuGet 提要关闭相关的任何错误消息。


D
Dion V.

重新启动 Visual Studio 或卸载/重新加载项目对我不起作用,但删除“obj”文件夹然后重建似乎已经解决了这个问题。


S
Shimmy Weitzhandler

对我来说,该错误是由于解决方案级别文件夹中现有的 global.json 文件导致的,该文件指向不同的 .NET 版本。删除该文件(或更改其 SDK 版本)解决了问题


我们添加了一个文件 'global.json' 并将版本指定为 { "sdk": { "version": "2.1.509", "rollForward": "latestFeature" } }
a
ak_01

将 NuGet 版本从 5.5.1 升级到 5.8.0 解决了该问题。


k
kayleeFrye_onDeck

您应该先在这里尝试所有其他解决方案。失败了,你可以尝试什么最终解除了我的封锁,而这些都没有。在将 Jenkins 构建移植到代理池上的 Azure DevOps 管道时,我遇到了这个问题。在尝试所有其他可能性之前,我花了大约 60 次构建。我发现需要做两件事:

确保该特定项目的工具是一致的 在发现重要的问题后,使用与所使用的 MSBuild 版本友好的 nuget 还原,但我无法将建议的解决方法用于刚刚更新的 nuget 工具。

我需要使用的版本可能与您的不同。

1:

call choco install windows-adk-all --version=10.0.15063.0 --force

call choco install windows-sdk-10.1 --version=10.1.15063.468 --force

2:

call MSBuild -t:restore Solution.sln

call MSBuild Solution.sln /t:rebuild;pack /p:Configuration=Release /p:Platform="Any CPU"
 

可悲的是,这里的超链接是所有其他“升级 XYZ”答案所缺乏的解释。
p
phoenixstudio

当我安装新的 sdk 版本时,我遇到了类似的问题。

例外是:

Severity Code Description Project File Line Suppression State Error NETSDK1005
Assets file '.. \RazorPages\obj\project.assets.json' doesn't have a target for 
'netcoreapp3.1'. Ensure that restore has run and that you have included 'netcoreapp3.1' 
in the TargetFrameworks for your project. RazorPages 
C:\Program Files\dotnet\sdk\5.0.102\Sdks\Microsoft.NET.Sdk
\targets\Microsoft.PackageDependencyResolution.targets    241

解决方案是再次选择项目的目标版本。

右键单击解决方案属性\应用程序选项卡将目标框架版本更改为不同的版本并将其更改回来。


这个错误发生在我身上,因为我错误地在旧的 VS 版本中编译了解决方案,它恢复了奇怪的依赖关系。这个答案解决了我的问题。
e
emilsteen

将 web 项目从 netcoreapp3.1 升级到 net5.0 时出现此错误。

这里的答案之一为我指明了正确的方向:

发布配置文件仍然将 netcoreapp3.1 作为目标框架。编辑发布配置文件并将目标框架更改为 net5.0 并且它工作。

(Visual Studio 16.8)


是的,3.1 -> 6.0 对我来说。
g
gregsonian

一位同事在将应用程序从 dotnet core 1.1 升级到 dotnet core 2.1 后遇到了这个问题。他正确更新了各种 csproj 文件中的所有 targetFramework 引用,并且在他的本地开发机器上没有问题。但是,我们在本地运行 Azure DevOps Server 并构建代理,因此在执行拉取请求构建后,构建代理会报告此错误。

由于新的目标框架,dotnet clean 任务引发错误。 dotnet clean 使用与构建、发布等相同的目标,因此在目标框架发生更改后,dotnet restore必须发生在 dotnet clean 之前以更新相关文件。事后看来,这是有道理的,因为您希望在进行任何构建或部署之前将依赖项恢复到正确的目标框架。

这可能只会影响具有升级目标框架的项目,但我尚未对其进行测试。


H
Hamed

使用命令行构建时收到“netcoreapp3.1”的类似错误。原来是一个 MsBuild 开关导致了这个问题。具体来说:

/p:TargetFramework="netcoreapp3.1"

卸下开关,错误已修复。


T
TheLoneWolf91193

在我的情况下,将 Visual Studio 2019 更新到最新版本,解决了这个问题。


P
Peter Csala

就我而言,如果您在 csrpoj 文件中同时包含 TargetFrameworksTargetFramework,删除 TargetFramework 将解决问题。

从以下位置编辑它:

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>netstandard2.0;net461;</TargetFrameworks>
        <TargetFramework>net461</TargetFramework><!--remove this line-->
    </PropertyGroup>
</Project>

<Project Sdk="Microsoft.NET.Sdk">
    <PropertyGroup>
        <TargetFrameworks>netstandard2.0;net461;</TargetFrameworks>
    </PropertyGroup>
</Project>

V
Viacheslav Mikhaylov

根据我的经验,如果您在使用“ProjectSection(ProjectDependencies) = postProject”构建的解决方案中有依赖项,那么在这种情况下,dotnet build 就会变得疯狂。


w
willbush

在使用 dotnet new worker 和来自 dotnet-docker samples 的 docker 文件创建的全新 dotnet 项目中使用 Docker 时,我遇到了 NETSDK1047

❯ docker build -t dockertest .

output elided...

/usr/share/dotnet/sdk/6.0.300/Sdks/Microsoft.NET.Sdk/targets/Microsoft.PackageDependencyResolution.targets(267,5): error NETSDK1047: Assets file '/source/obj/project.assets.json' doesn't have a target for 'net6.0/linux-musl-x64'. Ensure that restore has run and that you have included 'net6.0' in the TargetFrameworks for your project. You may also need to include 'linux-musl-x64' in your project's RuntimeIdentifiers. [/source/dockertest.csproj]
The command '/bin/sh -c dotnet publish -c release -o /app -r linux-musl-x64 --self-contained true --no-restore /p:PublishTrimmed=true /p:PublishReadyToRun=true /p:PublishSingleFile=true' returned a non-zero code: 1
dockertest on  main [✘] via .NET v6.0.202 🎯 net6.0
❯

问题是因为我忘记添加 .dockerignore file 忽略 binobj 目录。

我才意识到为什么,因为我尝试了 dotnet-docker 存储库中的不同 Dockerfile,并得到了具有相同分辨率的 different error。我将尝试对 NETSDK1047 的文档进行 PR 以添加此解决方案。编辑:链接到 PR https://github.com/dotnet/docs/pull/29530


J
Jamshaid K.

对我来说,这是因为我已将我的项目从 net5.0 迁移到 net.6.0 并且当我在调试工作正常时发布项目时引起了问题。

https://i.stack.imgur.com/yPjfn.png

https://i.stack.imgur.com/JWK3M.png

或者您可以通过进入 Properties > PublishingProfiles 目录下的发布配置文件 .pubxml 文件直接更改它。

https://i.stack.imgur.com/lsyJD.png


L
Lee Taylor

有同样的问题,对我来说,我的 TargetFramework 之前有一个空格

<TargetFramework> net6.0</TargetFramework>