C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[3]: アプリケーション設定の呼び出しにてエラーが発生


(過去ログ 178 を表示中)

[トピック内 13 記事 (1 - 13 表示)]  << 0 >>

■102155 / inTopicNo.1)  アプリケーション設定の呼び出しにてエラーが発生
  
□投稿者/ VBEgg (1回)-(2023/07/12(Wed) 00:17:31)

分類:[.NET 全般] 

2023/07/12(Wed) 00:20:33 編集(投稿者)
2023/07/12(Wed) 00:19:19 編集(投稿者)
2023/07/12(Wed) 00:19:12 編集(投稿者)

<pre><pre>開発環境 Windows10
Microsoft Visual Studio Version 
Microsoft Visual Studio Community 2022 (64 ビット) - Current
Version 17.6.4


すみません、かなりの初心者となります。

アプリケーション設定ファイルの使い方をテストしようとしていたのですが、
アプリケーション設定ファイルにて設定済みのデータを、
My.Settings.TimerUseFlg
にて呼び出したところ、Settings.Designer.vbが表示され、エラーが発生しました。
まだ何も他にはいじっていない状態ですので、何が悪いのかもわかりません。
VB2015では同様のことをして大丈夫だったのですが、何か2015と2022で違いがあるのでしょうか?

ソースコード
Public Class FrmMain
Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Dim wflg As Boolean

wflg = My.Settings.TimerUseFlg
Stop

End Sub
End Class

エラー
ハンドルされていない例外
System.Configuration.ConfigurationErrorsException
HResult=0x80131902
Message=Configuration system failed to initialize
Source=System.Configuration.ConfigurationManager
スタック トレース:
場所 System.Configuration.ClientConfigurationSystem.EnsureInit(String configKey)
場所 System.Configuration.ClientConfigurationSystem.PrepareClientConfigSystem(String sectionName)
場所 System.Configuration.ClientConfigurationSystem.System.Configuration.Internal.IInternalConfigSystem.RefreshConfig(String sectionName)
場所 System.Configuration.ConfigurationManager.RefreshSection(String sectionName)
場所 System.Configuration.ClientSettingsStore.ReadSettings(String sectionName, Boolean isUserScoped)
場所 System.Configuration.LocalFileSettingsProvider.GetPropertyValues(SettingsContext context, SettingsPropertyCollection properties)
場所 System.Configuration.SettingsBase.GetPropertiesFromProvider(SettingsProvider provider)
場所 System.Configuration.SettingsBase.GetPropertyValueByName(String propertyName)
場所 System.Configuration.SettingsBase.get_Item(String propertyName)
場所 System.Configuration.ApplicationSettingsBase.GetPropertyValue(String propertyName)
場所 System.Configuration.ApplicationSettingsBase.get_Item(String propertyName)
場所 VBEGG.My.MySettings.get_Pbln_TimerUseFlg() (C:\Users\VBEGG\Desktop\VBEGG\VBEGG\My Project\Settings.Designer.vb):行 62
場所 VBEGG.FrmMain.FrmMain_Load(Object sender, EventArgs e) (C:\Users\VBEGG\Desktop\VBEGG\VBEGG\FrmMain.vb):行 5
場所 System.Windows.Forms.Form.OnLoad(EventArgs e)
場所 System.Windows.Forms.Form.OnCreateControl()
場所 System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)
場所 System.Windows.Forms.Control.CreateControl()
場所 System.Windows.Forms.Control.WmShowWindow(Message& m)
場所 System.Windows.Forms.Control.WndProc(Message& m)
場所 System.Windows.Forms.ScrollableControl.WndProc(Message& m)
場所 System.Windows.Forms.ContainerControl.WndProc(Message& m)
場所 System.Windows.Forms.Form.WmShowWindow(Message& m)
場所 System.Windows.Forms.Form.WndProc(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
場所 System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
場所 System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, WM msg, IntPtr wparam, IntPtr lparam)

この例外は、最初にこの呼び出し履歴
[外部コード] でスローされました

内部例外 1:
ConfigurationErrorsException: Unrecognized configuration section system.diagnostics. (C:\Users\VBEGG\Desktop\VBEGG\VBEGG\bin\Debug\net6.0-windows\VBEGG.dll.config line 8)
</pre></pre>
引用返信 編集キー/
■102156 / inTopicNo.2)  Re[1]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ WebSurfer (2737回)-(2023/07/12(Wed) 07:02:11)
No102155 (VBEgg さん) に返信

.NET Framework or .NET Core/.NET どっちですか? そのバージョンは?

作っているのはなんですか? Windows Forms アプリ?

> まだ何も他にはいじっていない状態ですので、何が悪いのかもわかりません。
> VB2015では同様のことをして大丈夫だったのですが、何か2015と2022で違いがあるのでしょうか?

どういう意味ですか? VS2015 で作った既存のプロジェクトをコピーしてきた?
引用返信 編集キー/
■102157 / inTopicNo.3)  Re[2]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ VBEgg (2回)-(2023/07/12(Wed) 07:44:13)
2023/07/12(Wed) 07:48:58 編集(投稿者)
2023/07/12(Wed) 07:48:55 編集(投稿者)

レスありがとうございます。
すみません。質問さえまともにできていないようですね。
家を出てしまったので、.netFrameworkのバージョンは後ほどご連絡します。

> .NET Framework or .NET Core/.NET どっちですか? そのバージョンは?
.net Framework(バージョン?)

> 作っているのはなんですか? Windows Forms アプリ?
Windows Forms

> どういう意味ですか? VS2015 で作った既存のプロジェクトをコピーしてきた?
いえ、コピーはしてきていません。
会社でFormを作成し、Loadイベントに同じことをして確認をしたのですが、
問題無く設定の値を取れたので、家でもやってみようとしたらエラーが出た、
という状況です。

@VisualStudio2022をインストール
A新規プロジェクトを作成
Bメインのフォームを作成、起動時のフォームに変更
C設定でアプリケーション設定を行い
D上記コードを打ち込む
Eデバッグボタンで起動→エラー


No102156 (WebSurfer さん) に返信
> ■No102155 (VBEgg さん) に返信
>
> .NET Framework or .NET Core/.NET どっちですか? そのバージョンは?
>
> 作っているのはなんですか? Windows Forms アプリ?
>
>>まだ何も他にはいじっていない状態ですので、何が悪いのかもわかりません。
>>VB2015では同様のことをして大丈夫だったのですが、何か2015と2022で違いがあるのでしょうか?
>
> どういう意味ですか? VS2015 で作った既存のプロジェクトをコピーしてきた?
引用返信 編集キー/
■102158 / inTopicNo.4)  Re[3]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ WebSurfer (2738回)-(2023/07/12(Wed) 08:01:46)
No102157 (VBEgg さん) に返信

不用な引用は避けてください。見にくくなるので。

>>.NET Framework or .NET Core/.NET どっちですか? そのバージョンは?
> .net Framework(バージョン?)

間違いないですか? .NET Framework と .NET Core/.NET は違うのは分かってますか?


引用返信 編集キー/
■102159 / inTopicNo.5)  Re[4]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ VBEgg (3回)-(2023/07/12(Wed) 08:48:26)
> >>.NET Framework or .NET Core/.NET どっちですか? そのバージョンは?
>>.net Framework(バージョン?)
>
> 間違いないですか? .NET Framework と .NET Core/.NET は違うのは分かってますか?
間違いない、つもりですが、家に帰ってから確認します。

ただし、今会社のPCにVisualStudio2022をインストールし、同様の事を試してみました。

すると、エラーが発生することなく出来ましたが、
 Bメインのフォームを作成、起動時のフォームに変更
を行うとエラーが発生しました。

Bの作業を詳しく書きますと、
1)メインのフォームを作成(FrmMain)
2)Form1が不要だと判断、ソリューションエクスプローラーから削除を実行(Form1.vbという名前も気に入らなかったため)
3)起動時のフォームをFrmMainに変更
4)保存し、デバッグボタンを押下
 この際に、「Application.Designer.vb」が立ち上げり、Form1が無い、というエラーが出たので、手動で変更(下のソースの★部分)
 英語が余り読めないので、気にしていなかったのですが、直接修正しないでください、とかかれています。

このForm1の削除とApplication.Designer.vbの修正がダメだったという気がしていますが、どう思われますか?


Application.Designer.vb
'------------------------------------------------------------------------------
' <auto-generated>
' This code was generated by a tool.
' Runtime Version:4.0.30319.42000
'
' Changes to this file may cause incorrect behavior and will be lost if
' the code is regenerated.
' </auto-generated>
'------------------------------------------------------------------------------

Option Strict On
Option Explicit On

Namespace My

'NOTE: This file is auto-generated; do not modify it directly. To make changes,
' or if you encounter build errors in this file, go to the Project Designer
' (go to Project Properties or double-click the My Project node in
' Solution Explorer), and make changes on the Application tab.
'
Partial Friend Class MyApplication

<Global.System.Diagnostics.DebuggerStepThroughAttribute()>
Public Sub New()
MyBase.New(Global.Microsoft.VisualBasic.ApplicationServices.AuthenticationMode.Windows)
Me.IsSingleInstance = False
Me.EnableVisualStyles = True
Me.SaveMySettingsOnExit = True
Me.ShutDownStyle = Global.Microsoft.VisualBasic.ApplicationServices.ShutdownMode.AfterMainFormCloses
End Sub

<Global.System.Diagnostics.DebuggerStepThroughAttribute()>
Protected Overrides Sub OnCreateMainForm()
Me.MainForm = FrmMain ←★ここを変更★
End Sub
End Class
End Namespace
引用返信 編集キー/
■102160 / inTopicNo.6)  Re[1]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ 魔界の仮面弁士 (3667回)-(2023/07/12(Wed) 09:47:28)
No102155 (VBEgg さん) に返信
> ConfigurationErrorsException: Unrecognized configuration section system.diagnostics. (C:\Users\VBEGG\Desktop\VBEGG\VBEGG
> \bin\Debug\net6.0-windows\VBEGG.dll.config
> line 8)

出力先が "\bin\Debug\net6.0-windows" と書かれていることから、
これは .NET Framework 向けではなく、.NET 6 向けの Windows Forms プロジェクトですね。


VS2022 で新しいプロジェクトを作成する際の、プロジェクト テンプレートには
よく似た名前が並んでいるのでご注意ください。

(1)「Windows フォーム アプリケーション (.NET Framework)」
(2)「Windows フォーム アプリ」

前者は .NET Framework 向けで、後者が .NET / .NET Core 向けです。

.NET Framework 版のフォームでは、既定のアイコンが「黄/赤/青の矩形」が並んだカラフルなものなのに対し、
.NET 版では「濃灰色の矩形」が並んだダークカラーのものに変更されています。


ちなみにそれぞれのプロジェクト名は、既定で
 (1) VB、C# 共に → WinFormsApp1
 (2) VB → WindowsApp1、C# → WindowsFormsApp1
という名前付けになっています。

(なので、既定のプロジェクト名を使っている質問者だと、言語やテンプレートをある程度絞り込めたりする…)


> Private Sub FrmMain_Load(sender As Object, e As EventArgs) Handles MyBase.Load
>  Dim wflg As Boolean
>  wflg = My.Settings.TimerUseFlg
>
> 場所 VBEGG.My.MySettings.get_Pbln_TimerUseFlg() (C:\Users\VBEGG\Desktop\VBEGG\VBEGG\My Project\Settings.Designer.vb):行 62

設定名は "TimerUseFlg" だと言っていますが、
エラーは "get_Pbln_TimerUseFlg" だと言っていますね。

「Pbln_TimerUseFlg」という名に、何か心当たりはありますか?

行番号的に、
 Public Property Pbln_TimerUseFlg() As Boolean
  Get
   Return 何某★(エラー発生個所)
  End Get
  Set 以下略
 End Property

のあたりだと推察しますが、ConfigurationErrorsException であることから、
アプリケーション設定ファイルの内容が破損している可能性が考えられます。


・アンチウイルス ソフトウェアによる監査と競合し、設定ファイルが破損してしまった
 → 中身がすべて 0x00 の NULL バイナリで埋め尽くされた設定ファイルを過去に何度見たことが…
・プロジェクトの App.config の内容に問題がある
 → 開発時の設定ミス
・実行フォルダーの VBEGG.dll.config の内容、またはユーザーフォルダーの user.config に問題がある
引用返信 編集キー/
■102161 / inTopicNo.7)  Re[5]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ WebSurfer (2739回)-(2023/07/12(Wed) 09:48:18)
No102159 (VBEgg さん) に返信

> ただし、今会社のPCにVisualStudio2022をインストールし、同様の事を試してみました。
>
> すると、エラーが発生することなく出来ましたが、
>  Bメインのフォームを作成、起動時のフォームに変更
> を行うとエラーが発生しました。

別の問題を同じスレッドで質問すると発散しがちなので避けてください。

会社で行ったことをよく覚えておいて、それと全く同じこと家に帰ってからやってみれば、
No102155 の家だ起こった問題は解決するかも。
引用返信 編集キー/
■102162 / inTopicNo.8)  Re[5]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ 魔界の仮面弁士 (3668回)-(2023/07/12(Wed) 10:03:13)
No102159 (VBEgg さん) に返信
> Bの作業を詳しく書きますと、
> 1)メインのフォームを作成(FrmMain)
> 2)Form1が不要だと判断、ソリューションエクスプローラーから削除を実行(Form1.vbという名前も気に入らなかったため)

新規に追加して以前の物を削除する代わりに、既存のフォームを
ソリューション エクスプローラーからリネームするという手もあります。
どちらの方法をとるかはお好みで。


> 3)起動時のフォームをFrmMainに変更
.NET Framework 版の場合は、プロジェクトのプロパティの[アプリケーション]タブ - [スタートアップ フォーム]
.NET 版の場合は、プロジェクトのプロパティの[アプリケーション]タブ - [全般]-[スタートアップ オブジェクト]
ですね。


> Me.MainForm = FrmMain ←★ここを変更★
Visual Studio の更新バージョンによっては、スタート アップ変更後に
MainForm の書き換えに失敗することがあります。

その場合は今回行っていただいたように、手動で書き換えて対処してあげてください。
引用返信 編集キー/
■102163 / inTopicNo.9)  Re[2]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ VBEgg (4回)-(2023/07/12(Wed) 13:24:53)
魔界の仮面弁士様

返信ありがとうございます。

> 出力先が "\bin\Debug\net6.0-windows" と書かれていることから、
> これは .NET Framework 向けではなく、.NET 6 向けの Windows Forms プロジェクトですね。
すみません。その辺に疎くて完全にわかっていません。
勉強いたします。


> 設定名は "TimerUseFlg" だと言っていますが、
> エラーは "get_Pbln_TimerUseFlg" だと言っていますね。
>
> 「Pbln_TimerUseFlg」という名に、何か心当たりはありますか?

心当たりあります。
変数の命名規則が自分的に少し気持ち悪かったため、
フォルダ名の修正をする必要があったため、
こちらに掲載する前にテキストエディターで修正しました。(要は修正漏れです)

会社PCでスタートフォームの変更を行う前はちゃんとMy.Settingsの値を参照できたので、
明らかにForm1を削除したりしたせいなので、削除せずに開発を進めることとします。

引用返信 編集キー/
■102164 / inTopicNo.10)  Re[6]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ VBEgg (5回)-(2023/07/12(Wed) 13:26:42)
2023/07/12(Wed) 13:28:46 編集(投稿者)

WebSurfer様

返信ありがとうございます。

> 会社で行ったことをよく覚えておいて、それと全く同じこと家に帰ってからやってみれば、
> No102155 の家だ起こった問題は解決するかも。

まさしくその通りかと思われますので、家帰ってからやってみることとします。

お時間を頂きまして、ありがとうございました。
帰宅して、問題が無ければ、この問題はクローズさせて頂きます。

引用返信 編集キー/
■102165 / inTopicNo.11)  Re[6]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ VBEgg (6回)-(2023/07/12(Wed) 13:31:00)
魔界の仮面弁士様

返信ありがとうございます。

作業手順を書いて頂き、助かります。
参考にしながら、帰宅してから作業してみます。

問題が発生しなければ、そのままクローズにいたします。

引用返信 編集キー/
■102166 / inTopicNo.12)  Re[7]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ WebSurfer (2740回)-(2023/07/12(Wed) 13:46:50)
No102164 (VBEgg さん) に返信

>>会社で行ったことをよく覚えておいて、それと全く同じこと家に帰ってからやってみれば、
>>No102155 の家だ起こった問題は解決するかも。
>
> まさしくその通りかと思われますので、家帰ってからやってみることとします。

解決しないかもしれません。

エラーメッセージ「ConfigurationErrorsException 0x80131902 Configuration system
failed to initialize」でググってみると以下の記事がヒットして known issue だと
言ってますね。

Configuration system failed to initialize
https://developercommunity.visualstudio.com/t/configuration-system-failed-to-initialize-1/1683175

質問者さんと同じ WinForms, .NET 6, ConfigurationErrorsException, line 8 だそ
うです。

その記事からリンクが張ってある、

Updating the Default Settings file in a WinForms .NET 5 Visual Basic app fails.
https://github.com/dotnet/project-system/issues/6784

に再現手順が書いてあります。

自分の環境 Windows 10 の Visual Studio Community 2022 17.6.5 で VB.NET, .NET 6 の
WinForms アプリをテンプレートで作って、上の記事と同じ手順で試してみました。

上の記事のような ConfigurationErrorsException にはなりませんでしたが、自動生成
される Settings.Designer.vb に意味不明なコードが含まれ、エラーになります。

以下に画像を貼っておきます。

http://surferonwww.info/BlogEngine/image.axd?picture=2023%2f7%2fvs2022.jpg

理由は分かりませんが(調べる気が起きません)、上の記事のステップ 4 で "Make sure
to rename the Name to Settings.settings." としたのが何故か問題のようで、デフォル
トの Settings1.settings のままにしておけば何故か問題は出ませんでした。




Windows OS で動く WinForms アプリを .NET 6 で作るのは個人的には間違っているとさ
え思います。

そもそも、.NET 6 で作る WinForms アプリは C# でも以下の記事のような問題が多かっ
たです (その後改善はされているようですが)。

.NET 6.0 で Windows Forms アプリ作成
http://surferonwww.info/BlogEngine/post/2021/12/04/create-winforms-application-using-visual-studio-2022-net-6.aspx

VB.NET ではさらに今回のように問題があるようです。

どうしても .NET 6 でなければならないという理由がなければ、.NET Framework 4.8 で
作った方が良さそうです。

それから、VB.NET もやめて C# で作ることをお勧めします。C# なら、自分が試した限り
では、上のような問題は出ませんでした。
引用返信 編集キー/
■102169 / inTopicNo.13)  Re[3]: アプリケーション設定の呼び出しにてエラーが発生
□投稿者/ VBEgg (7回)-(2023/07/13(Thu) 15:53:55)
遅くなりましたが、結果だけご報告してクローズいたします。

VB2022のWindows Form アプリケーションを新規作成し(.Net6)、最初に作成されたForm1をそのまま放置してフォームを追加しようとしたところ、Form1を認識していないのか、追加するフォームの名前がデフォルトでForm1となっており、そのままの名前で追加すると当然エラーになりました。
やっぱり.Net6は新規でプロジェクトを作成する際に、自身が作ったForm1をちゃんと認識していないのか、自動で作成される設定ファイルのどこかがおかしいのかわかりませんが、あまり作成しないほうが良い感じでした。

VB2022では.Net5か.Net6、.Net7で作成できるため、.Net7でやったところ、当質問の内容は発生しませんでした。

なお、WebSurferさんからのせっかくのアドバイスなのですが、私としては20年ほどのVBAの経験からのVBという流れがあり、コーディングの際のわかりやすさからvb.netを使っていくつもりです。
ありがとうございました。

魔界の仮面弁士さんも貴重なお時間を頂き、わかりやすく指導いただきありがとうございました。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -