使用 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。这会导致问题吗?
dotnet build -f netcoreapp2.1
。您要么需要使用 -f netstandard2.0
并将其作为目标添加到资产文件中,要么切换到以 .NET Core 2.1 为目标。
根据 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 错误消息能够为此类问题的根源提供一些线索。
重新启动 Visual Studio 为我解决了该错误。
右键单击项目文件,然后单击卸载。然后右键单击项目并重新加载。
在类似情况下出现此错误。这对我有帮助:Link
这是我的 .net core 3.0 项目的 *.csproj 文件中的属性组:
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFrameworks>netcoreapp3.0</TargetFrameworks>
<RuntimeIdentifier>win-x64</RuntimeIdentifier> <----- SOLVES IT. Mandatory Line
</PropertyGroup>
从 nuget 5.4 迁移到 nuget 5.8 解决了我的 devops 构建服务器上的问题
5.7
升级到 5.8
后,错误得到解决。
删除您创建的发布配置文件并创建一个新配置文件。该向导将为您放入正确的目标框架工作并再次发布。它应该可以解决问题。
如果您的构建脚本以 dotnet restore
开头并以 dotnet publish --no-restore
结尾,您必须确保它们都包含相同的 --runtime
参数。
对我来说,问题最终是我的一个 NuGet 提要已关闭,因此包没有正确更新。直到我直接在解决方案上运行 NuGet 包恢复时,我才看到与我的 NuGet 提要关闭相关的任何错误消息。
重新启动 Visual Studio 或卸载/重新加载项目对我不起作用,但删除“obj”文件夹然后重建似乎已经解决了这个问题。
对我来说,该错误是由于解决方案级别文件夹中现有的 global.json 文件导致的,该文件指向不同的 .NET 版本。删除该文件(或更改其 SDK 版本)解决了问题
将 NuGet 版本从 5.5.1 升级到 5.8.0 解决了该问题。
您应该先在这里尝试所有其他解决方案。失败了,你可以尝试什么最终解除了我的封锁,而这些都没有。在将 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"
当我安装新的 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
解决方案是再次选择项目的目标版本。
右键单击解决方案属性\应用程序选项卡将目标框架版本更改为不同的版本并将其更改回来。
将 web 项目从 netcoreapp3.1 升级到 net5.0 时出现此错误。
这里的答案之一为我指明了正确的方向:
发布配置文件仍然将 netcoreapp3.1 作为目标框架。编辑发布配置文件并将目标框架更改为 net5.0 并且它工作。
(Visual Studio 16.8)
一位同事在将应用程序从 dotnet core 1.1 升级到 dotnet core 2.1 后遇到了这个问题。他正确更新了各种 csproj 文件中的所有 targetFramework 引用,并且在他的本地开发机器上没有问题。但是,我们在本地运行 Azure DevOps Server 并构建代理,因此在执行拉取请求构建后,构建代理会报告此错误。
由于新的目标框架,dotnet clean
任务引发错误。 dotnet clean
使用与构建、发布等相同的目标,因此在目标框架发生更改后,dotnet restore
必须发生在 dotnet clean
之前以更新相关文件。事后看来,这是有道理的,因为您希望在进行任何构建或部署之前将依赖项恢复到正确的目标框架。
这可能只会影响具有升级目标框架的项目,但我尚未对其进行测试。
使用命令行构建时收到“netcoreapp3.1”的类似错误。原来是一个 MsBuild 开关导致了这个问题。具体来说:
/p:TargetFramework="netcoreapp3.1"
卸下开关,错误已修复。
在我的情况下,将 Visual Studio 2019 更新到最新版本,解决了这个问题。
就我而言,如果您在 csrpoj 文件中同时包含 TargetFrameworks
和 TargetFramework
,删除 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>
根据我的经验,如果您在使用“ProjectSection(ProjectDependencies) = postProject”构建的解决方案中有依赖项,那么在这种情况下,dotnet build 就会变得疯狂。
在使用 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 忽略 bin
和 obj
目录。
我才意识到为什么,因为我尝试了 dotnet-docker
存储库中的不同 Dockerfile,并得到了具有相同分辨率的 different error。我将尝试对 NETSDK1047
的文档进行 PR 以添加此解决方案。编辑:链接到 PR https://github.com/dotnet/docs/pull/29530
对我来说,这是因为我已将我的项目从 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
有同样的问题,对我来说,我的 TargetFramework
之前有一个空格
<TargetFramework> net6.0</TargetFramework>
不定期副业成功案例分享
TargetFramework
元素似乎也有效。希望我不会再遇到那个问题...