Основное приложение ASP.NET(.NET Framework) для Windows x64 только ошибка в project.assets.json

Я хочу упростить свою настройку в приложении ASP.NET Core Web Application (.NET Framework) с использованием VS 2017.

Я уже знаю, что мой сайт будет работать под Windows/IIS в среде x64 и .NET 4.6.2. В этом и непредвиденном будущем у этого приложения нет никаких шансов использовать любую другую среду от разработчика до производства.

Итак, мне нужны только режимы Debug x64 и Release x64. (AnyCPU и x86 не нужны!), Поэтому я пошел дальше и удалил все остальные настройки из проекта.

Теперь при компиляции я получаю следующую ошибку:

C:\Projects\MyProject\My.Website\obj\project.assets.json 'не имеет цели для .NETFramework, версия = v4.6.2/win7-x64'.

Убедитесь, что вы восстановили этот проект для TargetFramework = 'net462' и RuntimeIdentifier = 'win7-x64'. MD.Website C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Sdks\Microsoft.NET.Sdk\build\Microsoft.NET.Sdk.targets

Я занимаюсь разработкой на Windows 7, я не уверен, как это исправить. Любая идея?

Ответ 1

По какой-то причине <TargetFramework> в моем файле .csproj был единственным. Я добавил "s" и стал "TargetFramework s", который работал:

  <PropertyGroup>
    <TargetFrameworks>net462</TargetFrameworks>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
  </PropertyGroup>

Ответ 2

Я не изменил свой TargetFramework, я запустил в консоли диспетчера пакетов команду:

dotnet restore

И это сработало! (Я использую VS2017, и я делаю приложение ядра .net, указывающее на .net-инфраструктуру)

Ответ 3

Я вручную изменил свою версию с x86 на x64. В этом случае просто восстановление пакетов из Visual Studio не будет работать, но закрытие Visual Studio, удаление Project.assets.json, перезапуск Visual Studio и перестройка проекта работали для меня. Я оставил <TargetFramework> сингулярный.

Командная строка nuget restore ... также может работать.

Ответ 4

У меня возникла эта проблема при попытке опубликовать консольное приложение dotnetcore в локальной папке после обновления до версии 2.0.

После попытки удаления папок и восстановления dotnet и убедитесь, что все настройки в приложении и сборке были 2_0 безрезультатно. Я понял, что мой профиль публикации по-прежнему нацелен на 1.1, хотя 2.0 показывался как выбранный, когда я входил в редактирование профиля, он показал 1.1 в резюме публикации. Поэтому я повторно выбрал 2.0 в раскрывающемся списке, и он обновил сводку, чтобы показать 2.0, и все это работало нормально.

Ответ 5

По какой-то причине <RuntimeIdentifier> в моем файле .csproj отсутствовал. Добавление его решило эту проблему для меня:

<PropertyGroup>
  <TargetFramework>net472</TargetFramework>  
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>      
  <Platforms>AnyCPU;x64</Platforms>
  <LangVersion>7.3</LangVersion>
</PropertyGroup>

Ответ 6

У меня есть ядро приложения .net, указывающее на .net framework 4.6.1 в VS2017, которое я пытался опубликовать. Я изменил цель своей платформы с x86 на x64 и начал получать эту ошибку, когда я попытался опубликовать снова, но у меня не было никаких проблем для сборки. Я только что открыл настройки профиля публикации, и все выглядело нормально (целевое время выполнения было win7-x64), но этого было достаточно, чтобы моя публикация начала работать должным образом.

Ответ 7

Проверьте фактический файл профиля публикации публикации, которую вы пытаетесь запустить. В нашем случае у нас есть набор проектов, которые должны быть разделены между Core и обычным asp.net, поэтому мы ориентируемся на Core 1.1 и устанавливаем версию времени выполнения на 4.6.1. После запуска всех проектов и обновления их до целевой версии 4.7, я начал получать эту ошибку при публикации (фактические сборки работали нормально, как и отладка localhost, была опубликована публикация).

Проверяя фактический файл "widgets - Web Deploy.pubxml", я нашел его внизу:

    <_DestinationType>AzureWebSite</_DestinationType>
    <TargetFramework>net461</TargetFramework>
    <RuntimeIdentifier>win7-x64</RuntimeIdentifier>
  </PropertyGroup>
</Project>

Как уже упоминали другие в этой теме, простое открытие листа свойств профиля публикации покажет вам, в моем случае, что целевая среда была нацелена на 4,7 (что было точным для всех участвующих проектов, но не отражало фактическую значение в файле)... Мне все еще нужно было нажать кнопку Сохранить, чтобы получить базовый файл .pubxml, который будет фактически обновлен с правильным значением. Возможно, вы также можете редактировать этот файл вручную, если вы чувствуете, что склонны.

Этот сводил меня с ума. :)

Ответ 8

Как отметил Борис, в моем случае проблема была в PublishProfiles. Сначала я добавил в свой файл .csproj следующее (как упомянуто в посте выше BluE):

<PropertyGroup>
  <TargetFramework>net472</TargetFramework>  
  <RuntimeIdentifier>win-x64</RuntimeIdentifier>      
  <Platforms>AnyCPU;x64</Platforms>
  <LangVersion>7.3</LangVersion>
</PropertyGroup>

и затем я открыл свой PublishProfile

Web Publish Panel

а затем нажмите на ссылку Изменить:

Edit Profile

и, наконец, в открывшемся диалоговом окне установите TargetFramework для своего проекта Framework и TargetRungime на win-x64, а затем нажмите Сохранить!

enter image description here

Вот и все!
Теперь, если вы попытаетесь опубликовать свой проект с использованием этого профиля, он должен работать отлично.
Надеюсь, это кому-нибудь поможет.