Jak*_*ter 4 .net c# dll .net-assembly
有没有人有任何见解,为什么在动态加载(使用Assembly.CreateInstance)程序集内部调用Trace调用时不会产生输出?奇怪的是,Debug.WriteLine在程序集内工作正常,并且正在进行动态加载的程序集内的Trace调用也可以正常工作.我已经确认Trace.Listeners包含正确的侦听器对象(与Debug.Listeners相同)但是对Trace的调用只是不生成任何输出.
这对我来说是一个巨大的诊断问题,因为我的整个应用程序都是通过自定义TraceListener进行日志记录.
更新:(从下面的评论)我正在使用CSharpCodeProvider动态构建程序集,但我没有/d:TRACE在CompilerParameters.CompilerOptions中提供开关.因此,TRACE没有在程序集中定义,我对Trace的调用基本上被忽略了.另外值得一提的是,我设置CompilerParameters.IncludeDebugInformation = true这可以解释为什么我正在调试,即使我没有明确设定/d:DEBUG在CompilerParameters.CompilerOptions.这只是猜测 - 在MSDN文档中没有任何内容表明这是真的.
这里的底线是,当使用CSharpCodeProvider动态编译源时,任何特定于程序集的内容都取决于您明确定义.