我创建了一个PostSharp方面,当app.config文件中的密钥不存在时抛出编译错误,但ConfigurationManager.AppSettings.HasKeys()返回" false"当我在CompileTimeValidate方法中检查它。可以帮我?谢谢!
[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 :(得分:1)
PostSharp编译时检查是它自己独立的过程。它没有在您的应用程序的上下文中运行,也没有加载或读取您的app.config。
要确认,我在测试类中使用了您的属性并收到错误消息,"测试不存在!"
然后我添加了这个 C:\ ProgramData \ PostSharp \ 4.2.29 \ bin.Release \ postsharp-net40 86 srv.exe.config
<appSettings>
<add key="test" value="123"/>
</appSettings>
......再次建造,错误消失了。这是他正在阅读的.config文件。