SDS library facilitates data integration into an application; the same API can be used to work with different data sources. But if you try to run an application, using SDS, on a machine where the SDS package is not installed, it will fail. The reason is that the SDS infrastructure cannot find core assemblies and assemblies required to support particular data source. The latter assemblies contain types called DataSet Providers. Each provider implements physical data access routines and has an associated name and possibly extension(s). For example, a NetCDFDataSet class is a provider for the NetCDF data format; it is associated with provider name "nc" and file extension ".nc". This enables the DataSetFactory to properly create a DataSet instance when you call the code as follows:

// Full syntax:
DataSet ds = DataSet.Open("msds:nc?file=data.nc&openMode=create");
// Short syntax:
DataSet ds = DataSet.Open("data.nc?openMode=create");

Usually each DataSet provider type is defined in a separate assembly; for example, the NetCDFDataSet class is defined in the Microsoft.Research.Science.Data.NetCDF4.dll. There are a number of assemblies with DataSet providers, shipped as a part of the SDS installation package. This makes it possible for a programmer to create DataSets for different supported data sources without care about the assemblies.

In some cases an application, using SDS, should be run on a machine where SDS is not installed. For example, you have no administrative rights to install it, or there is no point for that, like in a case when you need to run your application on a thousand of computational nodes of a cluster. In these cases, you should help SDS infrastructure to find and register required providers.

SDS allows to specify providers in a configuration file. At least a name of a provider and full name of the provider's type must be specified; also it is possible to associate one or several file extensions with the provider. For this you should (a) properly prepare an application configuration file, and then (b) ship all required assemblies with the application.

The following steps enable an application to use certain DataSet provider on a machine without SDS installation. We will describe the process using NetCDF provider as an example; the steps are same for any other provider.

1. Prepare an application configuration file. A configuration file for a .NET application contains specific settings for the application, and the name of the configuration file is the name of the application with a .config extension. For example, name of a configuration file for a myApp.exe is myApp.exe.config. You can either add the configuration file into your Visual Studio project when developing an application, or just create corresponding *.config file for an application, or modify existing application configuration file.
2. Edit the configuration file. Once you have created or found an application configuration file, open it either in Visual Studio editor or any other XML/text editor. Sample configuration file is here.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <!-- Declare configuration section named Microsoft.Research.Science.Data -->
  <configSections>
	<section name="microsoft.research.science.data.1.2" 
type="Microsoft.Research.Science.Data.Factory.FactoryConfigurationSection, Microsoft.Research.Science.Data,
 Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>
  <!-- Declarations of other config sections -->
  </configSections>
</configuration>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  . . .
  <microsoft.research.science.data.1.2>
       <factories>
         <!-- Here we will register providers --> 
       </factories>
  </microsoft.research.science.data.1.2>
</configuration>
<add name="nc" type="Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet, Microsoft.Research.Science.Data.NetCDF4,
 Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>
<add ext=".nc" type="Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet, Microsoft.Research.Science.Data.NetCDF4,
 Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>

Note: elements <add> for the official SDS providers (such as NetCDF, CSV and WCF) are given in the following table. You can also take sample file here. Do not forget to check the version number.
Provider name <add> elements
wcf <add name="wcf" type="Microsoft.Research.Science.Data.Proxy.WCF.WcfDataSetFactory, Microsoft.Research.Science.Data.ServiceModel, Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>
memory <add name="memory" type="Microsoft.Research.Science.Data.Memory.MemoryDataSet, Microsoft.Research.Science.Data.Memory, Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>
csv <add name="csv" type="Microsoft.Research.Science.Data.CSV.CsvDataSet, Microsoft.Research.Science.Data.CSV, Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>
.csv <add ext=".csv" type="Microsoft.Research.Science.Data.CSV.CsvDataSet, Microsoft.Research.Science.Data.CSV, Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>
nc<add name="nc" type="Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet, Microsoft.Research.Science.Data.NetCDF4, Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>
.nc <add ext=".nc" type="Microsoft.Research.Science.Data.NetCDF4.NetCDFDataSet, Microsoft.Research.Science.Data.NetCDF4, Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>
memory2 <add name="memory2" type="Microsoft.Research.Science.Data.Memory2.ChunkedMemoryDataSet, Microsoft.Research.Science.Data.Memory2, Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>
as <add name="as" type="Microsoft.Research.Science.Data.ActiveStorage.ASGridDataSet, Microsoft.Research.Science.Data.ActiveStorage, Version=1.2.6754.0, Culture=neutral, PublicKeyToken=e550de0161496f12"/>


3. Ship the assemblies. To use SDS, an application needs core SDS assemblies and providers. When the application runs and starts opening a DataSet, the DataSet Factory will look up the configuration file and try to load specified providers. Configuration contains names of assemblies with providers; core and provider assemblies must be located either side-by-side with the application executable file, or in GAC (or in locations given in the same configuration file using codebase or probing elements). In the simplest case, do the following steps:
Assembly When to copy
Microsoft.Research.Science.Data.dll Copy always
Microsoft.Research.Science.Data.Imperative.dll Required if application uses Imperative API
Microsoft.Research.Science.Data.ServiceModel.dll, Microsoft.Research.Science.Data.Pipeline.dll, Microsoft.Research.Science.Data.Utilities.dll, Microsoft.Ccr.Core.dll Required if application spawns viewer, opens shared dataset, creates proxy

Provider name Files to copy Comments
memory Microsoft.Research.Science.Data.Memory.dll
csv Microsoft.Research.Science.Data.CSV.dll
nc Microsoft.Research.Science.Data.NetCDF4.dll, netcdf4.dll There are two versions of the provider assemblies: for x86 and for x64. The appropriate files must be extracted from the GAC (see description under the table)
memory2 Microsoft.Research.Science.Data.NetCDF4.dll, SDSArrays.dll There are two versions of the provider assemblies: for x86 and for x64. The appropriate files must be extracted from the GAC (see description under the table)
wcf Microsoft.Research.Science.Data.ServiceModel.dll, Microsoft.Research.Science.Data.Pipeline.dll, Microsoft.Ccr.Core.dll


Now we will describe how to extract required libraries from GAC (this is required to get files for the NetCDF and Memory2 providers; here we will show the algorithm using NetCDF provider as an example).
cd c:\windows\assembly
c:\Windows\assembly>dir Microsoft.Research.Science.Data.NetCDF4.dll /s
 Volume in drive C has no label.
 Volume Serial Number is 76BE-38C4

 Directory of c:\Windows\assembly\GAC_32\Microsoft.Research.Science.Data.NetCDF4\1.2.6754.0__e550de0161496f12

28.03.2011  22:09            64 512 Microsoft.Research.Science.Data.NetCDF4.dll
               1 File(s)         64 512 bytes
c:\Windows\assembly>copy c:\Windows\assembly\GAC_32\Microsoft.Research.Science.Data.NetCDF4\1.2.6754.0__e550de0161496f12 c:\temp

c:\Windows\assembly\GAC_32\Microsoft.Research.Science.Data.NetCDF4\1.2.6754.0__e550de0161496f12\Microsoft.Research.Science.Data.NetCDF4.dll
c:\Windows\assembly\GAC_32\Microsoft.Research.Science.Data.NetCDF4\1.2.6754.0__e550de0161496f12\netcdf4.dll
        2 file(s) copied.

Two required files must be copied: Microsoft.Research.Science.Data.NetCDF4.dll and netcdf4.dll.

That's all. When the application configuration file is prepared, and all required files are copied into the application folder, the application is ready to run and use SDS.