Файл объектов obj\project.assets.json не имеет цели - VS2017

Использование Visual Studio 2017, AspNetCore 1.1.2

Внезапно я получаю следующую ошибку, когда пытаюсь опубликовать (Release build) любой проект в решении:

Файл активов 'C:\example\obj\project.assets.json' не имеет цели для ".NETFramework, Version = v4.5.2/win7-x86. Убедитесь, что восстановление выполнено и что вы включили 'net452' в TargetFrameworks для своего проект. Вам также может потребоваться включить" 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. Может ли это вызвать проблему?

Ответ 1

Согласно блогу Microsoft (который, как ни странно, моя учетная запись не имеет прав на публикацию сообщений), это не ошибка, и она полностью вызвана ReSharper. Если вы отключите это, проблема исчезнет.

Ошибка, одна проблема: я получаю эту ошибку, и у меня нет ReSharper.

После долгих поисков я нашел причину, по которой я получил ошибку в своем проекте .Net Core, который был обновлен с версии 1.0 до 2.1.

При запуске моего проекта в режиме отладки или выпуска все работало нормально, но когда я попытался опубликовать в 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 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.

Хотя я обновил версию .Net Core до 2.1 в Project\Properties и обновил различные пакеты nuget, было одно место, которое не подхватило это изменение - файл профиля публикации.

Мне нужно было перейти в папку Properties\PublishProfiles в моем решении, открыть файл .pubxml, относящийся к способу публикации в Azure, и изменить этот параметр с netcoreapp2.0 на netcoreapp2.1:

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

Смешно, а?

Хотелось бы, чтобы сообщения об ошибках Microsoft давали некоторую подсказку об источнике подобных проблем.

Ответ 2

По этот поток

Удаление папки "C:\Program Files\dotnet\sdk\2.1.102" решило проблему.

Ответ 3

Перезапуск Visual Studio решил проблему для меня.

Ответ 4

Щелкните правой кнопкой мыши по файлу проекта и выберите "Выгрузить". Затем щелкните правой кнопкой мыши по проекту и перезагрузите.

Ответ 5

Мне удалось исправить мои проблемы с помощью dotnet restore mysolution.sln после получения последних версий Visual Studio 2017 и .NET Core 2

Ответ 6

Для меня проблема заключалась в том, что один из моих каналов NuGet не работал, поэтому пакет не обновлялся должным образом. Только когда я запустил восстановление пакета NuGet непосредственно в решении, я не увидел никаких сообщений об ошибках, связанных с отключением моего канала NuGet.