Thanks @ChrisHemedingerand @AndreasMenrath. I ended up getting it working a few days ago after I had a look at what was going on in the Cmdlerts4Sas and combined that with the process as explained by Chris. That helped me understand where to get the server defs from (didn't realise they came from the objectFactory as well) and to use the server defs rather than the xml. The code I went with essentially looks like this: C#
dynamic omi = objectFactory.CreateObjectByServer(serverName, true, metaDataServerDef, loginName, password);
objectFactory.SetRepository(omi);
IEnumerable<SASObjectManager.ServerDef> serverDefs = objectFactory.ServerDefs.Cast<SASObjectManager.ServerDef>();
IServerDef workSpaceServerDef = default(IServerDef);
foreach (SASObjectManager.ServerDef serverDef in serverDefs) {
if (serverDef.Name == "SASApp - Workspace Server") {
workSpaceServerDef = serverDef;
break;
}
}
_workspace = (SAS.Workspace)objectFactory.CreateObjectByServer(serverName, true, workSpaceServerDef, loginName, password);
ObjectKeeper.AddObject(1, Name, _workspace);
VB.NET
Dim omi = objectFactory.CreateObjectByServer(serverName, True, metaDataServerDef, loginName, password)
objectFactory.SetRepository(omi)
Dim serverDefs As IEnumerable(Of SASObjectManager.ServerDef) = objectFactory.ServerDefs.Cast(Of SASObjectManager.ServerDef)()
Dim workSpaceServerDef as IServerDef
For Each serverDef As SASObjectManager.ServerDef In serverDefs
If serverDef.Name = "SASApp - Workspace Server" Then
workSpaceServerDef = serverDef
Exit For
End If
Next
_workspace = DirectCast(objectFactory.CreateObjectByServer(serverName, True, workSpaceServerDef, loginName, password), SAS.Workspace)
ObjectKeeper.AddObject(1, Name, _workspace)
... View more