WPFバージョン問題のトラブルシューティング記録

WPFバージョン問題のトラブルシューティング記録

命を大切に、不明なサードパーティコンポーネントライブラリは避けよう。

最終更新 2023/04/17 20:00
一位极少露面的靓仔
読了目安 2 分
カテゴリ
.NET
タグ
.NET C# WPF

本文由网友投稿。

作者:一位极少露面的靓仔

原文标题:WPF 版本问题排坑记录

原文链接:https://www.cnblogs.com/akwkevin/p/17288814.html

本文は読者からの投稿です。文中のサンプルリポジトリ:Dotnet9WPFControls、使用説明:WPF|快速添加新手引导功能(支持 MVVM)、サンプルが正常に動作したら1、失敗したら0を押して、感想を残してください…。

原文は以下の通りです。


先に結論を言います:命を大事に、不明なサードパーティ製コンポーネントライブラリからは遠ざかれ【管理者:...】

問題の説明

今朝、サボっているときに狼兄のオープンソースプロジェクトDotnet9WPFControlsを見つけました。とても興味を持ちました!しかし、cloneした後、起動できませんでした?え?姿勢が悪い?よし、もう一度実行!それでも起動できず、仕方なく狼兄本人に相談しました。狼兄は自分でcloneしたところ、彼の環境ではこのバグは再現しませんでした。エラーが発生しているライブラリはnugetから取得したものなので、まずエラー画面を見てみましょう:

トラブルシューティングの旅

サードパーティライブラリは:"MaterialDesignThemes.Wpf" です。

問題は明らかで、ライブラリの依存関係でアセンブリのバージョンが合っていないことが原因です。このPresentationFrameworkを見つけて適切なバージョンを当てれば良いわけです。問題は明確に見えます。

では、上記の考えに従って操作を始めましょう:

まず、現在参照しているPresentationFrameworkのローカルマシン上の保存場所を確認します:

そこで、このファイルディレクトリに入ります:

最初は6.0.2と6.0.16のフォルダはなく、後でこの問題を解決するためにダウンロードしたものです。

そしてフォルダに入ると、次のようになります:

このPresentationFrameworkがエラーになっている6.0.0バージョンです。上記の解決方針に従えば、これを6.0.2バージョンに置き換えれば問題は解決するはずですよね?

新しい問題が発生

そこで早速実行しようとしましたが、新しい問題が発生しました。6.0.2バージョンのPresentationFrameworkはどこで見つければいいのでしょうか?

PresentationFrameworkの他の類似のdllを観察したところ、この6.0.0は.NET SDKのバージョンと連動していることがわかりました。つまり、net6.0.2のSDKをダウンロードすればPresentationFrameworkの6.0.2バージョンが見つかるということです。

そこで、マイクロソフトの公式サイトにダウンロードに行きます:

ここで注意:テストした結果、右側のデスクトップランタイムをダウンロードしても無意味で、左側のSDKをダウンロードする必要があります。

解決する

ダウンロード後、参照をどのように置き換えるのでしょうか?

簡単です。私はとてもずるいが非常に便利な方法を思いつきました(このプロジェクトを実行するだけで、リリースは伴わないのでこれで問題ありません。ただし、リリースが必要な場合は絶対にこの方法を禁止してください!)

そうです、ファイル名のリネームです。6.0.2バージョンをダウンロードした後、参照フォルダは次のようになります:

狸の親分の入れ替えをしましょう!

6.0.2を6.0.0に変更します:


(※注:画像のキャプションが元記事と同一ですが、リネーム後のフォルダ構成を示していると思われます)

最後に、プロジェクトを再起動すると、問題は完全に解決され、正常に実行できました:

まとめ

管理者も新しいPC環境ですが、正常に動作しました。コメントをお待ちしています。

さらに探索

関連読書

その他の記事
同じカテゴリ / 同じタグ 2025/05/27

WPFで危険警告効果を実現する

作成したプログラムをユーザーに配布した後、ユーザーが危険な操作を行っている場合、ソフトウェアは警告効果を表示する必要があります。例えば、フレームの端が赤くなるような、高徳地図のような警告効果です。

続きを読む
同じカテゴリ / 同じタグ 2024/06/20

CodeWF.EventBus:軽量イベントバス、コミュニケーションをよりスムーズに

CodeWF.EventBusは、モジュール間の疎結合通信を実現する柔軟なイベントバスライブラリです。WPF、WinForms、ASP.NET Coreなど、さまざまな.NETプロジェクトタイプに対応しています。シンプルな設計で、コマンドのパブリッシュとサブスクライブ、リクエストとレスポンスを簡単に実装できます。順序付けられたイベント処理により、イベントが適切に処理されることを保証します。コードを簡素化し、システムの保守性を向上させます。

続きを読む