次のMSB3644合併症エラーが発生します。
フレームワーク ".NETFramework、Version = v4.0"の参照アセンブリが見つかりませんでした。これを解決するには、このフレームワークバージョンのSDKまたはターゲットパックをインストールするか、SDKまたはターゲットパックがインストールされているフレームワークのバージョンにアプリケーションを再ターゲットします。アセンブリはグローバルアセンブリキャッシュ(GAC)から解決され、参照アセンブリの代わりに使用されることに注意してください。したがって、アセンブリが意図したフレームワークを正しくターゲットにしていない可能性があります。
私が読んだもの here から、それは私のマシン上のアセンブリが「Program Files(x86)」ではなく「Program Files」に保存されていることが原因です。 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を使用しています。
同じエラーが発生しました。フレームワークバージョンは私のコンピューターに問題なくインストールされました(この特定のバージョンのフレームワークのインストーラーを実行しても何も行われませんでした-既にインストールされていることがわかりました)。ただし、フレームワークはVisual Studioの「一部として」インストールされませんでした。
私のためにそれを修正したもの:VSインストーラーを実行(再ダウンロード ここから 失われた場合)、Visual Studioで[変更]をクリックし、[個々のコンポーネント]タブに移動して確認します.NETカテゴリにないもの。
CsprojにFrameworkPathOverrideを設定していません。