« こんなところに | トップページ | 復活 »

2026年8月13日 (木)

「WindowsBase」の異なるバージョン間で、解決できない競合

昨日の雨、思ったほど降らなかった。

雲の動きを見ていると、なんとも複雑な動きで、こっちにくるのか、離れていくのか、よくわからない動きだった。

朝は、マシだったけれど、時間とともに、いつも通りの暑さ。

 

以前のバージョンの、Visual Studioのプログラムを、2022で開いて、修正し、コンパイルしようとしたら、

タスク ファクトリ "CodeTaskFactory" をアセンブリ "C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Build.Tasks.vCurrent.dll" から読み込めませんでした。ファイルまたはアセンブリ 'file:///C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Build.Tasks.vCurrent.dll'、またはその依存関係の 1 つが読み込めませんでした。指定されたファイルが見つかりません。

というエラーが出た。

このDLLがない?

こんなの見たことがなかったし、イマイチよくわからないので、ネット検索したら、こういう記事が見つかった。

c# - Can't build in visual studio 2015 because 'Microsoft.Build.Tasks.v14.0.dll' cannot be found - Stack Overflow

「(パス)\packages\Baseclass.Contrib.Nuget.Output.2.0.0\build\net40\Baseclass.Contrib.Nuget.Output.targets」ファイル内を
下記のように書き換えるか、「Microsoft.Build.Tasks.Core.dll」をコピーして、「Microsoft.Build.Tasks.v17.0.dll」にリネームするか、というやり方らしい。

<UsingTask TaskName="PackageFilter" TaskFactory="CodeTaskFactory" AssemblyFile="C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\Microsoft.Build.Tasks.Core.dll">

2つ目の、バージョン番号にリネームするのは、うまくいかなかったのだけれど、エラーの表示通りで、バージョン番号ではなく、「Microsoft.Build.Tasks.vCurrent.dll」というファイル名にする必要性があった。

これで、コンパイル出来た。

 

次の問題は、アイコン。

どうも、2022では、プログラムのアイコンの登録の仕方が変わっているらしい。

まずは、Formの設定の中ICOに、パスを通すこと。

次に、プロジェクトの設定の中で、PNGファイルのパスを通すこと。

以前だったら、こういう感じでOKだったはず。

更に追加して、次のようにする必要性があるらしい。

以前は、こんなのはなかった。

「.vbproj」ファイル内

<PropertyGroup>
<ApplicationIcon>(ファイル名).ico</ApplicationIcon>
</PropertyGroup>

これを設定して、やっと、アイコンが、ちゃんとなった。

 

次は、ビルドする時の出力先のフォルダ指定。

以前であれば、「Relase」や「Debug」の直下に、EXEが出来ていたけれど、2022からは、「x64」とか「x86」とか、ビット数ごとに出力されるようになった。

厳密に、分けたい場合は、それでいいだろうけれど、以前同様、そういうのを気にせずにビルドしたいなら、パスが深くなって、面倒になるので、以前と同様にしたいと思うだろう。

でも、Visual Studioの設定の中では、そういう変更は出来ないようで、「.vbproj」ファイル内のビルド出力パスの設定を、次のようにしてあげる必要性がある。

<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<OutputPath>(パス)\bin\Release\</OutputPath>
</PropertyGroup>

こうすれば、以前同様の出力となる。

応用すれば、自分の好きな場所に出力することも可能になるね。

 

最後は、Webview2を使って、簡易ブラウザを作ろうとした時に出たエラー。

今までは、4.7とかでやっていたけれど、出来るだけ、新しいバージョン、NET8とかでやった方がいいだろうと思って、始めたら、これだ。(苦笑)

"WindowsBase" の異なるバージョン間で、解決できない競合が見つかりました。
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: "WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" と "WindowsBase, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" の間で競合が発生しました。
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: プライマリであるため、"WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" が選択されました。"WindowsBase, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" はプライマリではありませんでした。
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: "WindowsBase, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" [C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.28\ref\net8.0\WindowsBase.dll] に依存する参照です。
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.28\ref\net8.0\WindowsBase.dll
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: 参照 "C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.28\ref\net8.0\WindowsBase.dll" の原因となったプロジェクト ファイルの項目インクルード。
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: C:\Program Files\dotnet\packs\Microsoft.NETCore.App.Ref\8.0.28\ref/net8.0/WindowsBase.dll
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: "WindowsBase, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" [] に依存しているか、統合されている参照。
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: C:\(ユーザのパス)\.nuget\packages\microsoft.web.webview2\1.0.4078.44\lib_manual\net5.0-windows10.0.17763.0\Microsoft.Web.WebView2.Wpf.dll
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: 参照 "C:\(ユーザのパス)\.nuget\packages\microsoft.web.webview2\1.0.4078.44\lib_manual\net5.0-windows10.0.17763.0\Microsoft.Web.WebView2.Wpf.dll" の原因となったプロジェクト ファイルの項目インクルード。
1>C:\Program Files\Microsoft Visual Studio\2022\Community\MSBuild\Current\Bin\amd64\Microsoft.Common.CurrentVersion.targets(2433,5): warning MSB3277: C:\(ユーザのパス)\.nuget\packages\microsoft.web.webview2\1.0.4078.44\buildTransitive\..\\lib_manual\net5.0-windows10.0.17763.0\Microsoft.Web.WebView2.Wpf.dll
1>WebView2 -> D:\Programs\libmozjpeg\WebBrowser\WebView2\bin\Release\WebView2.dll

WPFなんて、使っていないのに、それを読み込もう(?)としているのか、「Wpf.dll」が邪魔しているのかと思って、それをリネームしたけれど、ダメ。

AIと相談しながら、「.vs」「bin」「obj」各フォルダを削除しても、ダメ。

設定ファイルの中で、

<UseWPF>true</UseWPF>

という風にしてもダメ。

結局、AIの力では解決できず、ネットの力で解決した。

[Problem/Bug]: [NET 9] Dependency conflict · Issue #4924 · MicrosoftEdge/WebView2Feedback

「.vbproj」に以下を追加。

<ItemGroup>
<FrameworkReference Include="Microsoft.WindowsDesktop.App" />
</ItemGroup>

これで、ビルド時の、上記のエラーが解消された。

バージョンが変わると、色んなところが変更されていて、見たことがないエラーが出て、本当に大変だ。(苦笑)

|

« こんなところに | トップページ | 復活 »

パソコン・インターネット」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




« こんなところに | トップページ | 復活 »