Подтвердить что ты не робот

MSB3644 Ссылочные сборки для фреймворка не найдены

Я получаю следующую ошибку осложнения MSB3644:

Ссылочные сборки для каркаса ".NETFramework, Version = v4.0" не найдены. Чтобы решить эту проблему, установите SDK или Targeting Pack для этой версии фреймворка или перенастроить приложение к версии рамки, для которой у вас есть SDK или пакет таргетинга. Обратите внимание, что сборки будут разрешены из Глобального кэш-памяти (GAC) и будет использоваться вместо контрольные сборки. Поэтому ваша сборка может быть неправильной предназначенные для рамки, которую вы планируете использовать.

Из того, что я читал здесь, это связано с сборками на моей машине, хранящимися в "Program Files", а не в "Program Files (x86)". Свойство FrameworkPathOverride на MSBuild может его исправить.

Я попытался добавить это свойство (FrameworkPathOverride) в csproj:

<Project Sdk="Microsoft.NET.Sdk">
  <Import Project="..\..\tools\common.props" />
  <PropertyGroup>
    <TargetFrameworks>net40;net45;netstandard1.2</TargetFrameworks>
    <GeneratePackageOnBuild>False</GeneratePackageOnBuild>
    <FrameworkPathOverride>C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.0</FrameworkPathOverride>
  </PropertyGroup>
  <ItemGroup Condition=" '$(TargetFramework)' == 'net40' ">
    <Reference Include="System.Configuration" />
  </ItemGroup>
  <ItemGroup Condition=" '$(TargetFramework)' == 'net45' ">
    <Reference Include="System.Configuration" />
  </ItemGroup>
  <PropertyGroup Condition=" '$(TargetFramework)' == 'netstandard1.2' ">
    <DefineConstants>$(DefineConstants);NETSTANDARD</DefineConstants>
  </PropertyGroup>
  <ItemGroup Condition=" '$(TargetFramework)' == 'netstandard1.2' ">
  </ItemGroup>
</Project>

Эта ошибка затем исчезает, но все мои типы и пространства имен не могут быть разрешены, и я также получаю это предупреждение сборки:

MSB3270 Несоответствие между архитектурой процессора проект, построенный "AMD64", и процессорная архитектура Справка "C:\Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll", "x86". Это несоответствие может привести к сбоям во время выполнения. Пожалуйста, подумайте об изменении целевую архитектуру процессора вашего проекта через Configuration Manager, чтобы согласовать архитектуры процессоров между вашим проектом и ссылками, или зависеть от ссылки с архитектурой процессора, которая соответствует целевому процессорную архитектуру вашего проекта.

После установки целевой платформы проекта на x86 предупреждение исчезает, но все же типы и пространства имен не могут быть разрешены.

У меня установлены все необходимые фреймворки:

введите описание изображения здесь

Я использую Visual Studio 2017 в Windows 10.

4b9b3361

Ответ 1

Получил ту же ошибку. Версия фреймворка была хорошо установлена на моем компьютере (запуск установщика для этой конкретной версии фреймворка ничего не сделал - он сказал, что он уже установлен). Но фреймворк не был установлен "как часть" Visual Studio.

Что для меня исправило: Запустите установщик VS (переустановите его отсюда, если вы его потеряли), нажмите "изменить" в Visual Studio, перейдите на вкладку "отдельные компоненты" и проверьте вещи, которые отсутствуют в .NET категория.