Problemas de SSRS ReportViewer con el origen de datos incrustado XML

Tengo una aplicación C # (WPF) en la que quiero mostrar un informe SSRS en el control ReportViewer. El archivo de informe local tiene fuente de datos XML incrustada en él. El informe se muestra correctamente cuando se ejecuta desde SQL Server Business Intelligence Development Studio. Pero cuando corro con mi aplicación me sale el siguiente error:

A data source instance has not been supplied for the data source '...'.

Así que aquí está lo que estoy haciendo:

He definido datos XML incrustados, como se explica en este tutorialDefinición de un conjunto de datos de informe a partir de datos XML incrustados. Tengo una fuente de datos llamadaXmlDataSource_TopCustomers y un conjunto de datos llamadoXmlDataSet_TopCustomers, utilizando esa fuente de datos. He referido el conjunto de datos en una tabla y un gráfico. En general, el RDL tiene este aspecto (solo lo esencial, por supuesto):

    <Report xmlns="http://schemas.microsoft.com/sqlserver/reporting/2008/01/reportdefinition" xmlns:rd="http://schemas.microsoft.com/SQLServer/reporting/reportdesigner">
      <Body>
        <ReportItems>
          <Tablix Name="Tablix1">
            <DataSetName>XmlDataSet_TopCustomers</DataSetName>
          </Tablix>
          <Chart Name="Chart1">
            <DataSetName>XmlDataSet_TopCustomers</DataSetName>
          </Chart>
        </ReportItems>
      </Body>
      <DataSources>
        <DataSource Name="XmlDataSource_TopCustomers">
          <ConnectionProperties>
            <DataProvider>XML</DataProvider>
            <ConnectString />
          </ConnectionProperties>
          <rd:SecurityType>None</rd:SecurityType>
          <rd:DataSourceID>47833b52-231f-4634-8af4-3c63272b02a7</rd:DataSourceID>
        </DataSource>
      </DataSources>
      <DataSets>
        <DataSet Name="XmlDataSet_TopCustomers">
          <Query>
            <DataSourceName>XmlDataSource_TopCustomers</DataSourceName>
            <CommandText><Query>
     <ElementPath>Root /CustomerOrder {@CustomerNo, @CustomerName, @OrdersCount (Integer), @Total(Float), @AveragePerOrder(Float)}</ElementPath>
     <XmlData>
      <Root>
    <CustomerOrder CustomerNo="10001" CustomerName="Name 1" OrdersCount="2" Total="5.446740000000000e+003" AveragePerOrder="2.723370000000000e+003" />
    <CustomerOrder CustomerNo="10894" CustomerName="Name 2" OrdersCount="5" Total="3.334750000000000e+003" AveragePerOrder="6.669500000000001e+002" />
    <CustomerOrder CustomerNo="12980" CustomerName="Name 3" OrdersCount="2" Total="2.003290000000000e+003" AveragePerOrder="1.001645000000000e+003" />
      </Root>
     </XmlData>
    </Query></CommandText>
            <rd:UseGenericDesigner>true</rd:UseGenericDesigner>
          </Query>
          <Fields>...
        
      </DataSets>
      <rd:ReportUnitType>Inch</rd:ReportUnitType>
      <rd:ReportID>02172db8-2a1d-4c35-9555-b37ee6193544</rd:ReportID>
    </Report>

En este punto todo funciona bien desde el IDE.

En mi aplicación C #, tengo un ReportViewer y el siguiente código:

Viewer.LocalReport.ReportPath = @"<actualpath>\TopCustomers.rdl"; // actual path is OK
Viewer.RefreshReport();

Y luego entiendo eso

A data source instance has not been supplied for the data source 'XmlDataSet_TopCustomers'.

He visto que otros tienen el mismo problema, pero en la mayoría de los casos, el problema son las fuentes de datos múltiples, lo que no es el caso aquí, como se puede ver en el fragmento de código RDL anterior.

¿Alguna sugerencia?

Respuestas a la pregunta(3)

Su respuesta a la pregunta