WebView2を組み込んで、C#アプリを作成すると、ビルド時に以下の警告が発生する場合がある。
「参照」ツリーにも警告マークあり。
一応、エラーではなく警告なので、ビルドで作成されたexeファイルは問題なく使用できる。
けど、気になるので警告を消す方法を調べてみた。
そして、毎回忘れてしまうので備忘録として残しておく。。
警告を消す方法
- Visual Studioを一旦終了
- 「packages」フォルダ配下の「Microsoft.Web.WebView2~」フォルダを削除
- 再びVisual Studioを起動(ソリューションを開く)
- ソリューションをリビルド
これで解決。警告マークが消える。関連記事
Visual Studio 2005日本語版、12/15開発完了、2/1発売無料版開発環境 Visual Studio Community 2013をインストールしてみた[C#] WebBrowserコントロールからWebView2への切り替え無料開発ツール – Visual Studio Community 2015をインストールしてみたVisual Studio 2005 パッケージ販売は2月Microsoft Visual Studio 2008 日本語版
Surface6を買って、VisualStudioやらOffice2016やらをセットアップして、仕事を始めてみると、これまではビルドできていたプロジェクトが、エラーが出てビルドできない。なぜ?急に?こういうのばっかり。 参照コンポーネント 'VBIDE' が見つかりませんでした。
エラーを読むと、参照に追加しているVBIDEの参照先が見つからないと云われている。
他のプロジェクトでは、Microsoft.Office.Coreが見つからないというのもあった。
パソコンを変えたのが理由なのはわかる。多分、前のパソコンにはこれらのDLLがあったのだろう。しかし、VisualStudio2017をセットアップして、Office2016も入れて、さらにVisualStudioのOffice/SharePoint開発も追加しているのに、なにが足りないというのか。
調査
少し調べてみると、VBIDEのほうは「Microsoft Visual Basic for Applications Extensibility 5.3」という名前で昔から使われているものらしい。確かにエクセルだと参照できる。ふーむ。
下の方に表示されているパスを参考に探してみると、WindowsAppフォルダは隠しフォルダになっていて、しかも「C:\Program Files\WindowsApps」を開くことができない。
セキュリティ情報を見てみると、管理者グループにはフォルダ内を見る権限はあるみたいなのだが、実際は開けない。
所有者を変えればよいのかもしれないが、そこまでする意味もなさそうなので、ここでやめておく。
VBIDEはVBAの開発環境まわりだと思うのだけど、マイクロソフトとしてはVBAまわりの古いDLLはあまり使ってほしくないという感じなのかなあ、、、まあ、気持ちはわかります。
解決策
エラーが起きていたプロジェクトは、かなり昔に作ったもので、そのときに「VBIDE」が追加されたのだろう。そして今では不要になったのだろう。参照から外してビルドしてみたら問題なくビルドできた。これでOK。
このブログの人気の投稿
SQL Serverで頭記のエラーが起きたときは、文字列の数字を数値型の値に変換しようとして桁があふれた場合が多い。 たとえば '123456789012' という数字を0という数値と比較すると、数字を数値に変換して比較しようとして桁あふれが(算術オーバーフロー)が起きる select 1 where '123456789012' = 0 SQLServer2014だとエラーメッセージが少し変わって下記のようになる。 varchar の値 '123456789012' の変換が int 型の列でオーバーフローしました。
数字を数値に変換するSQLを修正すれば、このエラーは消える。テーブル設計がひどくて、varchar型の列に数字を登録して数値として扱う運用をしていたりすると、なかなか簡単ではないかもしれない。 * ここからは事例の紹介。 SQL Serverで何気ないSQLが急にエラーになってびっくりすることがある。たとえば、このSQLは調子よく動いていたのだが、データによってエラーが起きて、あたふたしてしまった。 select case when isnull([機関番号],0) = 0 then 5521111111 else [機関番号] end このSQLには1つ問題があって「機関番号」がvarchar(10)の列というのがミソ。ここに '5555555555' という大きな数字を登録したら、エラーが起きた。 エラーの原因を調べるためにSQLを少し書き換えてみる SQL(1) select case when isnull('5555555555', 0) = 0 then 5521111111 else 0 end SQL(2) select isnull('5555555555', 0)
SQL(3) select case when isnull('5555555555', '') = '' then 5521111111 else 0 end SQL(4) select case when 1=0 then 5521111111 else '55555555 WinFormsのタブコントロールには、タブの表示を切り替える方法が無くて不便だ。たとえば、下記のような指定ができない。 this.tabControl1.TabPages[0].Visible = false; と思っていたのだが、実はできた。
varchar をデータ型 numeric に変換中に、算術オーバーフロー エラーが発生しました。
タブコントロールのタブは非表示にできたんだ!
コンボボックスのDataSourceプロパティの使い方
コンボボックスに表示するデータを設定するのを簡単にする工夫をまとめます。コンボボックスのDataSourceプロパティを上手に使いましょう。(2017/8/30追記)