カスタムアクションで製品をインストールする際に、web.configファイルのカスタム構成セクションを更新しようとしています。インストーラが実行されてインストーラクラスがロードされた後、 Configuration.GetSectionがWindowsシステムディレクトリからカスタムセクションクラスをロードしようとしているときにFile Not Found例外をスローしました。私は、Windowsシステムディレクトリに必要なアセンブリをコピーすることでこれを動作させることができましたが、これは理想的な解決策ではありません。常にそのディレクトリにアクセスできるという保証はありません。インストーラクラスのカスタム構成セクションを編集する
どのようにこの問題を解決できますか?
私の更新コードは、この
[RunInstaller(true)]
public partial class ProjectInstaller : Installer
{
public override void Install(System.Collections.IDictionary stateSaver)
{
//some code here
webConfig = WebConfigurationManager.OpenWebConfiguration("MyService");
MyCustomSection mySection = webconfig.GetSection("MyCustomSection") //<--File Not Found: CustomConfigSections.dll
//Update config section and save config
}
}
のように見える私の設定ファイルはこの
<configuration>
<configSections>
<section name="myCustomSection" type="CustomConfigSections.MyCustomSection, CustomConfigSections" />
</configSections>
<myCustomSection>
<!-- some config here -->
</myCustomSection>
</configuration>
解決しましたか?私は同じ問題を抱えている。私はAppSettingsにはうまくアクセスできますが、ConfigHandlerを読み込むために必要なDLLはインストールの一部ですが、フォルダ内にあるように見えますがアクセスできません。 これは役に立つかもしれないと思っていますが、これまでの運はありません。 AppDomain currentDomain = AppDomain.CurrentDomain; currentDomain.AssemblyResolve + =新しいResolveEventHandler(MyResolveEventHandler); – Junto
私はもう少し良い解決策を見つけました。 Orcaを使用してmsiを編集して、順序を変更してアセンブリを展開し、カスタムアクションを実行する前にGACに配置することができます。まだ理想的ではありませんが、以前よりも良いです。 –