【问题标题】:MSB3644 The reference assemblies for framework were not foundMSB3644 未找到框架的参考程序集
【发布时间】:2017-12-31 08:41:53
【问题描述】:

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

框架的参考程序集 未找到“.NETFramework,Version=v4.0”。要解决此问题,请安装 此框架版本的 SDK 或 Targeting Pack 或重新定位您的 应用到您拥有 SDK 的框架版本 或已安装目标包。请注意,程序集将被解析 来自全局程序集缓存 (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 后,警告消失,但仍然没有类型或命名空间可以解析。

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

我在 Windows 10 上使用 Visual Studio 2017。

【问题讨论】:

  • 您是如何构建您的项目的?既然你已经安装了VS2017,那么从VS构建项目的结果如何呢?此外,您说“我机器上的程序集存储在“程序文件”而不是“程序文件(x86)”中,但您覆盖了“C:\ Program Files(x86)”的框架路径,这让我感到困惑。不是吗路径“C:\Program Files”?
  • 您找到解决方案了吗?我有同样的问题,但在 MAC 上编译

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


【解决方案1】:

遇到同样的错误。框架版本在我的计算机上安装得很好(为这个特定版本的框架运行安装程序什么也没做——它告诉我它已经安装了)。 但该框架并未“作为”Visual Studio 的一部分安装。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-08
    • 1970-01-01
    相关资源
    最近更新 更多