I figured out how to solve this problem. When Crystal Report is added to the class library project, it creates an appropriate class that inherits from ReportClass. An instance of this class can be used as a ReportSource for the viewer.
Example:
var report = new CrystalReport1(); report.SetDataSource(datasource); CrystalReportViewer1.ReportSource = report;
source share