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

时间:2017-07-25 12:15:31

标签: visual-studio msbuild visual-studio-2017 assemblies .net-standard

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

  

框架的参考组件   找不到“.NETFramework,Version = v4.0”。要解决此问题,请安装   此框架版本的SDK或Targeting Pack或重新定位您的   应用程序到您拥有SDK的框架版本   或安装了Targeting Pack。请注意,程序集将被解析   来自全球大会缓存(GAC)并将用于代替   参考组件。因此您的装配可能不正确   针对您想要的框架。

从我读过here开始,这是由于我的机器上的程序集存储在“程序文件”中而不是“程序文件(x86)”中。 MSBuild上的FrameworkPathOverride属性可以修复它。

我尝试将此属性(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”。   这种不匹配可能会导致运行时故障。请考虑改变   通过的目标处理器架构的项目   配置管理器,以便对齐处理器体系结构   您的项目和引用之间,或依赖于   具有与目标匹配的处理器体系结构的引用   您项目的处理器架构。

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

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

enter image description here

我在Windows 10上使用Visual Studio 2017。

1 个答案:

答案 0 :(得分:0)

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

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

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