VS2020 C# アセンブリ参照の仕方で困っています。CS0234 :

実現したいこと

NAudioライブラリーを使ってアプリ SentenceTimeStamper、以下STSを作っています。
(正確にはNAudioがver1.9から2.2にバージョンアップし、また.Netframewark4がサポート外になり、win11で開発を継続したいためバージョンアップしています。3年ぶりのC#開発のため、色々忘れています。)
STSは、NAudioライブラリのほか、NAudio.WaveFormRendererを使っていますが、WaveFormRenderer機能を追加したくクラスを追加したり、コードを書き換えたりしています。
現在、バージョンアップの作業をしていますが、以下のような問題に悩まされています。

発生している問題・分からないこと

エラー
CS0246 型または名前空間の名前 'PictureBox' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください) WaveFormRendererLib
が発生しています。

STS ver.2(以下STS2)はVisualStudio2022を使って開発をしています。ver.2にするためにSTS ver.1(以下STS1)のソリューションからWaveFormRendererのプロジェクトを削除し、GitHubのNAudio.WaveFormRendererからZIPファイルをダウンロードし、またその中からWaveFormRendererLibフォルダーをコピーし、STS2の開発用フォルダに貼り付け、VS2022のソリューションに既存のプロジェクトとして追加しました。

STS2のソリューションエクスプローラ

そのあと、WaveFormRendererを改造するために、クラスSentenceInfo(.cs)を追加しました。このクラスはSystem.Windows.FormsのPictureクラスを継承しています。

<STS1での状況>
以前開発が完了したSTS1のソリューションエクスプローラを示します。
STS1のソリューションエクスプローラ
STS1の時は、エラー(CS0246)は発生しませんでした。

<STS1とSTS2のソリューションエクスプローラ上の違い>
上の2つの図のソリューションエクスプローラを比べるとSTS2のWaveFormRendererLibには「参照」の項目がありません。このためアセンブリ参照ができないのだと考えます。
アセンブリを参照することができれば問題につながるのではないでしょうか。

なお、STS1とSTS2はGitHubからダウンロードできます。

エラーメッセージ

error

1重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 2エラー (アクティブ) CS0246 型または名前空間の名前 'PictureBox' が見つかりませんでした (using ディレクティブまたはアセンブリ参照が指定されていることを確認してください) WaveFormRendererLib D:\XXXXX\source_C#\TestSTS\SentenceTimeStamper-master (1)\SentenceTimeStamper2\WaveFormRendererLib\SentenceInfo.cs 7 3

該当のソースコード

C#

1using System;2using System.Windows.Forms;3 4 5namespace NAudio.WaveFormRenderer 6{7 public class SentenceInfo:PictureBox 8 {9 private long samplingPosition;10 private bool onstart;11 private bool onmanual;12 private const int ArrowWidth = 44;13 private const int ArrowHeight = 21;14 private string sentenceText;15 16 17 public SentenceInfo() 18 {19 Width = ArrowWidth;20 Height = ArrowHeight;21 22 }23 24 public SentenceInfo(long Position, bool onStart, bool onManual)25 {26 Width = ArrowWidth;27 Height = ArrowHeight;28 //Console.WriteLine("ArrowWidth1={0}", Width);29 30 this.samplingPosition = Position;31 this.onstart = onStart;32 this.onmanual = onManual;33 34 changImage();35 }36 37 private void changImage()38 {39 if (this.onstart)40 {41 this.Image = WaveFormRendererLib.Properties.Resources.StartTag;42 }43 else44 {45 this.Image = WaveFormRendererLib.Properties.Resources.PauseTag;46 }47 48 }49 public long SamplingPosition { get { return samplingPosition; } set { samplingPosition = value; } }50 public bool OnStart 51 { 52 get 53 {54 return onstart; 55 } 56 set 57 {58 onstart = value;59 changImage();60 } 61 }62 63 64 public bool OnManual { get { return onmanual; } set { onmanual = value; } }65 66 public string SentenceText { get { return sentenceText; } set { sentenceText = value; } }67 68 }69}70

試したこと・調べたこと

上記の詳細・結果

SentenceTimeSamperプロジェクトとWaveFormRendererLibプロジェクトのターゲットフレームワークを調べました。
以下の図のとおり、
SentenceTimeSamperプロジェクト:.NET Framework4.7.2
WaveFormRendererLibプロジェクト:.NET Standard2.0
でした。
WaveFormRendererLibプロジェクトのフレームワークが.NET Framework4.7.2ではなく、.NET Standard2.0のため、System.Windows.Formsを参照できないのでしょうか??

イメージ説明

イメージ説明

補足

以上、現状わかる範囲で調べてみました。不足についてはご質問ください。
ご教示の程、よろしくお願いします。

コメントを投稿

0 コメント