We propose a unifying dynamic-programming framework to compute exact\nliteral-weighted model counts of formulas in conjunctive normal form. At the\ncenter of our framework are project-join trees, which specify efficient\nproject-join orders to apply additive projections (variable eliminations) and\njoins (clause multiplications). In this framework, model counting is performed\nin two phases. First, the planning phase constructs a project-join tree from a\nformula. Second, the execution phase computes the model count of the formula,\nemploying dynamic programming as guided by the project-join tree. We\nempirically evaluate various methods for the planning phase and compare\nconstraint-satisfaction heuristics with tree-decomposition tools. We also\ninvestigate the performance of different data structures for the execution\nphase and compare algebraic decision diagrams with tensors. We show that our\ndynamic-programming model-counting framework DPMC is competitive with the\nstate-of-the-art exact weighted model counters cachet, c2d, d4, and miniC2D.\n