私は最終的にゲームになる単純なWinFormsアプリケーションを持っています。今、私はそれのデータアクセス層で作業しています。私は問題にぶつかりました。私はDataAccess
という別のプロジェクトを作成しました。その中にローカルの.mdf
SQL Serverデータベースファイルを作成しました。私はまた、接続文字列を格納するファイルapp.config
を作成しました。C#ConfigurationManagerがapp.configから間違った接続文字列を取得します。
ここではその設定ファイルです:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="TBG_Master"
connectionString="Data Source=(localdb)\MSSQLLocalDb;Integrated Security=true;AttachDbFileName=|DataDirectory|\TBG_Master.mdf"
providerName="System.Data.SqlClient"/>
</connectionStrings>
</configuration>
私はthis質問から引かれたコードを使用していますapp.configファイルから接続文字列を取得するには。
Assembly service = Assembly.GetExecutingAssembly();
ConnectionStringsSection css = ConfigurationManager.OpenExeConfiguration(service.Location).ConnectionStrings;
string cs = css.ConnectionStrings["TBG_Master"].ConnectionString;
return cs;
文字列をキーとして接続文字列をプルする行になると、null参照例外が返されます。
data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true
これは、それが私のapp.config
ファイル内にあるものを明確にではない、と私は私のDataAccess
プロジェクト内の他のapp.config
ファイルがありません知っている:css.ConnectionString
コレクション、唯一の接続文字列を調べた後、それはそれでこのようになりました。また、デバッグの後、私はそれが正しいアセンブリで探しているという事実を知っています。
なぜ私にこの接続文字列を与えて、正しいものではないのですか?
接続文字列は、ライブラリプロジェクトではなく*を実行するプロジェクト*に存在する必要があります。 Winformsプロジェクトのapp.configにある必要があります。 – Amy
Ohhhhhhhhhhhhhhhhhhhそれでは、それは理にかなっています。私のコードを変更して、それが正常に機能しているかどうかを報告してください:) –
ライブラリ内のapp.configsは参照用またはコンパイル時のツール用です。しかし、実行時には、実行中のプロジェクトのapp.configだけがカウントされます。 – Amy