我在跟踪方法等的.net库中使用了smartinspect。但是对于发布配置,我想避免部署smartinspect以及跟踪代码中的所有内容的开销。有没有一种简单的方法来实现这一点,而不是每次调用方法时都使用编译器指令?
示例代码:
public bool OpenDocument(string srcFile)
{
SiExportWordSession.EnterMethod(this, "OpenDocument");
try
{
SiExportWordSession.LogString("srcFile", srcFile);
try
{
_doc = new Document(srcFile);
return true;
}
catch (Exception e)
{
SiExportWordSession.LogException(e);
ErrorName = e.GetType().Name;
ErrorMessage = e.Message;
return false;
}
}
finally
{
SiExportWordSession.LeaveMethod(this, "OpenDocument");
}
}
我的第一个想法是为smartinspect创建一个包装器,它可以调用smartinspect或不执行任何操作,具体取决于发行版配置。但这不会让我摆脱尝试最终的构造。有没有更好的方法来解决这个问题?
答案 0 :(得分:5)
有一种方法,但它仍然需要您映射您正在使用的方法。
关键是要为您的方法添加Conditional
属性,以指示它将运行的构建:
[Conditional("TRACE")]
当构建定义TRACE
常量时,所有调用该方法的代码都将被编译到代码中。