MSB3644找不到框架的引用程序集

Dav*_*New 13 msbuild assemblies visual-studio visual-studio-2017 .net-standard

我收到以下MSB3644并发症错误:

找不到框架".NETFramework,Version = v4.0"的引用程序集.要解决此问题,请为此框架版本安装SDK或Targeting Pack,或者将应用程序重新定位到已安装SDK或Targeting Pack的框架版本.请注意,程序集将从全局程序集缓存(GAC)中解析,并将用于代替引用程序集.因此,您的程序集可能无法正确定位到您想要的框架.

从我在这里读到的,这是由于我的机器上的程序集存储在"程序文件"而不是"程序文件(x86)"中.FrameworkPathOverrideMSBuild上的属性可以修复它.

我已经尝试将此属性(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>
Run Code Online (Sandbox Code Playgroud)

那个错误然后消失了,但我的所有类型和命名空间都无法解决,我也得到了这个构建警告:

MSB3270正在构建"AMD64"的项目的处理器体系结构与参考"C:\ Windows\Microsoft.NET\Framework\v4.0.30319\mscorlib.dll","x86"的处理器体系结构之间存在不匹配.这种不匹配可能会导致运行时故障.请考虑通过Configuration Manager更改项目的目标处理器体系结构,以便在项目和引用之间调整处理器体系结构,或者依赖于具有与项目的目标处理器体系结构相匹配的处理器体系结构的引用.

将项目的目标框架设置为x86后,警告消失,但仍然没有类型或命名空间可以解析.

我安装了所有必要的框架:

在此输入图像描述

我在Windows 10上使用Visual Studio 2017.

Zon*_*nko 2

遇到同样的错误。框架版本已正确安装在我的计算机上(运行该特定版本框架的安装程序没有执行任何操作 - 它告诉我它已经安装)。但该框架并未“作为 Visual Studio 的一部分”安装。

为我解决的问题:运行 VS 安装程序(如果丢失,请从此处重新下载),在 Visual Studio 上单击“修改”,转到“单个组件”选项卡,然后检查 .NET 下缺少的内容类别。

我没有在我的 csproj 上设置任何 FrameworkPathOverride。