LoginSignup
0
0

クラスライブラリのターゲットOSを変えたときの注意

Last updated at Posted at 2023-08-22

正直タイトルで落ちているのですが、簡潔に何が起きてどう困ってどうすればよかったのかを書いておきます。

起きた出来事

DLL内のメソッドを呼び出そうとしても呼び出せない。名前空間自体がVisualStudioのIntelisenseに引っかからない。

予想したこと
1.命名を間違えているのではないかと思った
→他の名前空間との被りを疑ったがなし
2.アクセサーが間違っているのでは?
→他の呼び出せているメソッドと同様Public
3.ビルドしてない?
→5,6回した(さすがに二回目で違う原因を考えるべきだったと思う)

結論

VisualStudioの仕様上の問題というか、見落とし。
スクリーンショット 2023-08-22 164003.png

VisualStudio上でクラスライブラリのプロパティ>アプリケーションにおける赤線部、「ターゲットOS」を変えたことが問題だった。

スクリーンショット 2023-08-22 164234.png

問題の部分であるが、私は「net6.0」内にビルドしたDLLを参照して別アプリケーションを動かしていた。
ここが問題で、私はこのメソッドを呼び出そうとしたときにDLLを参照している別アプリケーションからの挙動を確認しようとしていた。

しかし、ターゲットOSを変えると何度ビルドしようがその後の更新内容は「net6.0-windows」に入っていく。
要するに古いままのDLLを見ているアプリを使いながら「新しく用意したメソッドが呼び出せない!」と言っていたのである。

反省点

・アクセサー、名前空間と言った言語上の概念に惑わされて、物理的なファイルの位置関係という初歩的な観点を見落としていた。
・VisualStudioという統合環境が肌に馴染むあまり、VisualStudioも動作しているアプリケーションであることを忘れていた(=なのでVisualStudioの参照のURLを確認することを思いつけなかった)

これで3.5時間も業務時間を溶かしており、普通に頭を抱えている。
今取り組んでいる業務は作業時間にバッファはあるのでこうして備忘録もさっと書けているが、逼迫している状況だったらシャレにならないロスだった…………。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0