C# - System.Reflectionがnugetパッケージフォルダーから参照されていない

okwaves2024-01-25  11

System.Reflection nuget パッケージをプロジェクトにインストールしていますが、dll への参照パスを確認すると、C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.8\ と表示されます。ファサード\System.Reflection.dll

nuget パッケージ フォルダーから手動で削除して追加しようとしましたが、依然として同じパスが表示されます。プログラム ファイルからではなく、nuget パッケージ フォルダーから参照されていることを確認するにはどうすればよいですか?

それはわざとです。 .NET インストールを破壊するだけですランダムに削除する場合は、答えは何が起こっているかを説明します。

– パナギオティス・カナボス

2020 年 9 月 3 日 15:46

なぜこんなことを聞​​くのですか?実際に問題に遭遇したことがありますか?それが何であれ、パッケージ自体が原因ではありません

– パナギオティス・カナボス

2020 年 9 月 3 日 15:48

私が答えを探している理由は、私には答えられないからです。xunit を使用してテスト プロジェクトから単体テストを実行します。テストを検出できず、次のエラーが発生します: [xUnit.net 00:00:00.25] Skipping: MyProject.Tests (依存アセンブリ 'System.Reflection, Version=4.3.0' が見つかりませんでした) ;)

– タヴィエ

2020 年 9 月 7 日 5:49



------------------------

System.Reflection パッケージには、空のフォルダー以外はほとんど何も含まれていません。

lib フォルダーには、.NET Framework 4.6.2 の System.Reflection.dll が 1 つだけありますが、そのアセンブリも mscorlib への参照を除いて空です。したがって、.NET Framework 4.6.2 を除き、NuGet パックにはアセンブリは存在しません。age フォルダーまたはプロジェクトの出力ディレクトリ。これらのアセンブリは、基礎となるフレームワーク ランタイムによって提供されます。

表示されるパスは、参照アセンブリへのパスです。これは、パッケージの ref フォルダーで提供されるものでもあります。参照アセンブリとランタイム アセンブリの違いについては、この関連投稿を参照してください。 @hansPassant と @MartinUllrich を引用するには:

ハンス パサントがすでに述べたように、「参照」はアセンブリはプログラムを構築するために使用されます。つまり、これは参照としてコンパイラに渡されるアセンブリです。ただし、実行時には実装が異なる場合があります。フレームワーク自体とは別に、これは単一のコンパイル時参照アセンブリを配布する任意の NuGet パッケージで使用できますが、tar ごとにさまざまな実装アセンブリも配布されます。get (.NET Core、.NET Framework、MonoAndroid など)。 NuGet パッケージの lib フォルダーを使用して、使用するアプリケーションが直接参照したくないプライベート実装アセンブリを追加することもできます。

参照アセンブリには「スタブ」のみがあります。これにより、使用可能な API サーフェスが定義され、コンパイラによって検査できるようになります。

1

ありがとう。 xunit を使用したテスト プロジェクトで単体テストを実行できません。テストを検出できず、次のエラーが発生します: [xUnit.net 00:00:00.25]スキップ: MyProject.Tests (依存アセンブリ 'System.Reflection, Version=4.3.0' が見つかりませんでした)。

– タヴィエ

2020 年 9 月 7 日 6:08

総合生活情報サイト - OKWAVES
総合生活情報サイト - OKWAVES
生活総合情報サイトokwaves(オールアバウト)。その道のプロ(専門家)が、日常生活をより豊かに快適にするノウハウから業界の最新動向、読み物コラムまで、多彩なコンテンツを発信。