答案选D
“by the time +将来时间”,用于将来完成时[will have done]或将来完成进行时[will have been doing],排除A,C.又由于B项是表示被动的,错误,故选D