【发布时间】: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