Я получаю следующую ошибку осложнения 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.