2016-07-26 3 views
0

私は、app.configファイルのキーが存在しないときにコンパイルエラーをスローするためにPostSharpアスペクトを作成しましたが、CompileTimeValidateメソッドでチェックするとConfigurationManager.AppSettings.HasKeys()が "false"を返します。私を助けることができますか?ありがとう!Postsharp - App Settingsの設定チェック

[Serializable] 
public class ConfigurationValueRequiredAttribute : MethodInterceptionAspect 
{ 
    // Method invoked at build time. It validates that the aspect has been applied to an acceptable method. 
    public override bool CompileTimeValidate(MethodBase method) 
    { 
     bool valid = true; 

     if (string.IsNullOrEmpty(ConfigurationManager.AppSettings["Test"])) 
     { 

      Message.Write(SeverityType.Error, "CUSTOM02", "Test not exists!"); 
      valid = false; 
     } 

     return valid; 
    } 
} 
+0

キーを確認するとどうなりますか?私はapp.configがコンパイル時に読み込まれるとは思わない。 app.configを手動でロードしたり、XMLとしてapp.configをロードしたり、キーが存在するかどうかを確認するためにxpathを実行したりできます。 – Michael

答えて

1

PostSharpのコンパイル時検査は、それ自身の別のプロセスです。アプリケーションのコンテキスト内で実行されておらず、app.configを読み込んだり読み込んだりしません。

確認するために、私はあなたの属性をテストクラスで使用し、 "Test not exist!"というエラーメッセージが表示されました。

は、その後、私は Cにこれを追加しました:\はProgramData \ PostSharp \ 4.2.29 \ bin.Release \ postsharp-net40-のx86-srv.exe.config

<appSettings> 
    <add key="test" value="123"/> 
</appSettings> 

...再び構築し、エラーは消え去った。それはそれが読んでいる.configファイルです。

関連する問題