プロジェクトが「.NETFramework、Version = v4.6.2」フレームワークを参照していません。「TargetFrameworks」に「.NETFramework、Version = v4.6.2」への参照を追加します


111

ユニットテストを実行できません。

次のエラーがあります:

プロジェクトが「.NETFramework、Version = v4.6.2」フレームワークを参照していません。プロジェクトファイルの「TargetFrameworks」プロパティに「.NETFramework、Version = v4.6.2」への参照を追加してから、NuGet復元を再実行します。

app.config

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>

プロジェクト>プロパティ>アプリケーション> TargetFramework(.NET Framework 4.6.2)

どうすれば修正できますか?


回答:


271

次のステップを実行してください

  1. クリーンなソリューション
  2. クリーンフォルダ「パッケージ」
  3. フォルダ「bin」を削除します
  4. フォルダ「obj」を削除します

27
#3と#4で問題が解決しました。4.7.2へのアップグレードタスクであるブランチがありましたが、4.7.1を対象とする別のブランチに切り替える必要がありました。その問題を解決するには、次の手順を実行します。
jjhayter

4
ソリューションディレクトリから、一歩をしなければならなかった:デル/ S project.assets.json
Jannes

このクリーンアップを実行した後、プロジェクトに.NetFrameworkエラーが表示された別のエラーがあることがわかりました。それを修正すると問題が解決しました。
meJustAndrew

2
stackoverflow.com/a/755433/769137には、これらを削除するためのバッチスクリプトがあります。
ヴェドラン

1
4.7.2から4.8にアップグレードしましたが、obj/フォルダを削除するだけで十分でした。
skst

30

同様の問題が発生しv4.7.2ましたが、。つまり、次のようなビルドログメッセージが表示され続けました。

error : Your project does not reference ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.

それが似ているように見えたという事実にもかかわらず、上記の提案されたステップのどれも私にとってはうまくいきませんでした。ビルドするたびに、このメッセージが表示され続けました。何も助けることができないようでした。

実際、問題はそれに関連しており、移行のために、2つのプロジェクトを1つのコードフォルダーに配置する必要がありました。それらの1つは.NetCoreを対象とし、もう1つは.Net Frameworkを対象としており、どちらも同じ.NetStandardライブラリを参照していました。どうやら、それらobjはコアプロジェクトがproject.assets.jsonファイルを置くのと同じフォルダを共有しています。実際、このファイルはフレームワークプロジェクトを妨害し、通常のビルドを妨げます。考えられる解決策の1つとして推奨されているpackages.configからPackageReference ...への移行を実行した場合でもそうです。

次のスニペットをフレームワークプロジェクトファイルに入れることで、問題の修正を試みることができます。

<Project>
  ...
  <PropertyGroup>
    <BaseOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/bin</BaseOutputPath>
    <BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
  </PropertyGroup>
  ...
</Project>

それはすぐに私のために働きました、私がそれを必要とする理由とそれが働く理由を注意深く読んだのは後でなってからでした。私が予期せずにそれを見つけたパート2.NETのコア3に移行サンプルWPFアプリケーションの下で、.NET Frameworkプロジェクトがまだビルドを確認してセクションを。BaseOutputPathそしてBaseIntermediateOutputPathmsbuild変数はそこにありますが、どこかでうまく文書化されているかどうかはわかりません。


これで私の問題は解決しました。そうでなければ私はそれを見つけることは決してないだろう、ありがとう。
エルドアンクルトゥール

1
VS2019では、言及したプロパティはOutputPathの前にある必要があることがわかりました。私は最初、それらをcsprojの下部にドロップしただけで、成功しませんでした。この投稿にはいくつかの追加の詳細があり、これはある時点で修正される可能性があることを意味します: github.com/dotnet/msbuild/issues/2070
John Dyer

18

それは、VS2017でVS2015プロジェクトを開いたときに私に起こりました。フォルダproject.assets.jsonからを削除すると、objうまくいきました。

とにかく、メッセージのフレームワークがファイルにありませんでしたが、私はそこに追加しませんでしたが、削除しました。


2
すべての中で最も単純なソリューション。ソリューション内のファイルを検索して、一度に削除するだけです:)
Imad

5

私はラリッサに賛成票を投じましたが、どうやってこれに参加したかを知ることは役立つかもしれないと思いました。ビルドに.net標準プロジェクトファイルを追加し(多くのプラットフォームを対象としています)、objフォルダーにある破片が生成されました。android sanity buildが登場すると、objフォルダーにスローされました。私の解決策は、ビルド前の手順としてそのフォルダーをクリーンアップすることでした。これは何年もうまく機能していたので難しい問題です...針が干し草の山に出会う。


2

私の場合、.pkgrefgen/プロジェクトフォルダの下のフォルダを削除します。このフォルダには、古い.netフレームワークを参照するファイルproject.assets.jsonが含まれています。


2
私のはobjフォルダー内のproject.assets.jsonファイルでした。binフォルダーとobjフォルダーを削除すると、問題は解決しました。
セレス

1

.net4.71でも同じことが起こりました。私の場合、packages.configから「パッケージ参照」に移行しただけです。

packages.configからPackageReferenceに移行します

...そしてそれは私の問題を修正しました。私にとっては、とにかくこれを行うつもりだったので、すでにこの方法を行っている場合は、上記をスキップしてパッケージ参照に移行します。


0

私は非常に古い.NETプロジェクトを使用していますが、突然停止するまで正常に機能していました。VisualStudioのアップグレードが修正されました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.