McKinnon has been sidelined since injuring his right knee in practice on Aug. 12. San Francisco general manager John Lynch told KNBR 680 that McKinnon will not play until the regular-season opener.
The 49ers are also without their top running back, Matt Breida, who suffered a shoulder injury in San Francisco's preseason opener against the Dallas Cowboys.
McKinnon, 26, who suffered a muscle strain in his knee, is expected to anchor San Francisco's ground game with the departure of Carlos Hyde via free agency.
Signed to a four-year, $30-million contract in March, McKinnon rushed for 530 yards and three touchdowns last season with the Minnesota Vikings. McKinnon also had 51 receptions for 421 yards and a pair of scores.
In four seasons with Minnesota, serving primarily as a backup and change-of-pace back, McKinnon recorded 1,918 yards rushing with seven touchdowns while adding 142 receptions for 984 yards and five scores in 58 games.