C# Web プロジェクトから使用している F# ライブラリ プロジェクトがあります。F# プロジェクトで Entity Framework Type Provider を使用し、接続文字列を取得したいと考えていますが、これを機能させるのWeb.config
に問題があります。
type internal FooDb =
SqlEntityConnection<ConnectionStringName="FooDb", Pluralize=true>
設計時にはApp.config
、一致する名前を持つ接続文字列を含むファイルを F# ライブラリ プロジェクトに含める必要があります。
実行時に C# Web プロジェクトから F# コードを呼び出すと、「App.config」ファイルが見つからないというエラーが表示されます。ConfigurationManager.ConnectionStrings
実行時に、現在アクティブな構成ファイル (Web アプリの場合) から接続文字列をロードするために使用するだけだと思っていたので、これには驚きましたWeb.config
。しかし、そうではないようです。
ConfigFile
パラメータを追加してみました:
type internal FooDb =
SqlEntityConnection<ConnectionStringName="FooDb", ConfigFile="Web.config", Pluralize=true>
しかし、これにより、設計時に見つからないという不平を言うだけでしWeb.config
た。
次にApp.config
、F# ライブラリ プロジェクトのファイルの名前を に変更したところWeb.config
、問題が解決したようです。しかし、私はこの解決策に不安を感じています。これは本当に意図された動作ですか?ライブラリ プロジェクトに web.config ファイルが必要ですか? コマンドライン実行可能ファイルから同じライブラリを使用したい場合、その環境で構成ファイルが呼び出される場合はどうすればよいAssemblyName.exe.config
ですか?
さまざまなコンテキストでさまざまな名前を持つことができる構成ファイルの名前をハードコーディングすることを強制することは、非常に脆弱であり、設計が不十分です。何か足りないと教えてください。