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

时间:2018-03-20 18:58:14

标签: c# asp.net-core visual-studio-2017

使用Visual Studio 2017,AspNetCore 1.1.2

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

  

资产文件' C:\ example \ obj \ project.assets.json'没有目标   ' .NETFramework,版本= v4.5.2 / WIN7 86&#39 ;.确保还原已运行   并且你已经包含了' net452'在Tar​​getFrameworks中为您的   项目。您可能还需要包含' win7-x86'在你的项目中   RuntimeIdentifiers。

已签入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。这会引起问题吗?

17 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:11)

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

Errr,一个问题:我收到此错误,并且没有ReSharper。

经过一整段 搜寻之后,我发现了在我的.Net Core项目中得到错误的原因,该项目已从1.0升级到2.1。

在Debug或Release模式下运行项目时,一切正常,但是当我尝试发布到Azure时,出现此错误:

Assets file '(mikesproject)\obj\project.assets.json' doesn't have a target for '.NETCoreApp,Version=v2.0'. Ensure that restore has run and that you have included 'netcoreapp2.0' in the TargetFrameworks for your project

尽管我已在Project \ Properties中将.Net Core的版本更新为2.1,并升级了各种nuget程序包,但仍有一个地方没有进行此更改...发布配置文件。

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

netcoreapp2.1

荒谬,嘿?

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

答案 2 :(得分:10)

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

答案 3 :(得分:10)

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

答案 4 :(得分:3)

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

答案 5 :(得分:2)

当我安装新的 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

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

  1. 右键单击解决方案
  2. 属性\应用程序选项卡
  3. 将目标框架版本更改为不同的版本,然后再改回来。

答案 6 :(得分:2)

将NuGet版本从5.5.1升级到5.8.0可以解决此问题。

答案 7 :(得分:1)

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

答案 8 :(得分:1)

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

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

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

答案 9 :(得分:1)

使用命令行构建时收到类似的“netcoreapp3.1”错误。结果证明是导致问题的 MsBuild 开关。具体来说:

Map<List<String>, List<String>> map = Files.lines(Path.of(csvFileName))        // get stream of lines from the input CSV file
        .map(s -> s.split(","))  // split a line into columns
        .collect(Collectors.groupingBy(
            // a key is a list of `name` and `source` columns
            arr -> Arrays.asList(arr[0], arr[2]),
            // a value is a list of field names in column #1
            Collectors.mapping(arr -> arr[1], Collectors.toList())
        ));
System.out.println(map);

移除了开关并修复了错误。

答案 10 :(得分:0)

就我而言,将 Visual Studio 2019 更新到最新版本,解决了该问题。

答案 11 :(得分:0)

我在将 web 项目从 netcoreapp3.1 升级到 net5.0 时遇到此错误。

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

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

(Visual Studio 16.8)

答案 12 :(得分:0)

您应该首先在这里尝试所有其他解决方案。如果没有尝试,您可以尝试最终阻止我的操作。在将Jenkins版本移植到代理池上的Azure DevOps管道时,我遇到了这个问题。在我尝试所有其他可能性之前,大约花了60个版本。我发现需要做两件事:

  1. 确保此特定项目的工具一致
  2. finding out that mattered之后使用的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"
 

答案 13 :(得分:0)

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

答案 14 :(得分:0)

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

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

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

答案 15 :(得分:0)

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

答案 16 :(得分:0)

对我来说,问题最终是因为我的NuGet提要之一关闭了,所以程序包无法正确更新。直到我直接在解决方案上运行了一个NuGet软件包还原后,我才发现与NuGet feed无关的所有错误消息。