Bestehende Konfigurationen öffnen und aktivieren

Um eine zuvor erzeugte Konfiguration zu aktivieren, muss eine Instanz von TwinCAT XAE erzeugt, die Konfiguration geladen und aktiviert werden.

Ablauf

Die ProgId "VisualStudio.DTE.10.0" wird für die Erstellung einer Instanz von Visual Studio verwendet. Über das Visual Studio DTE-Objekt ist eine volle Kontrolle über Visual Studio möglich. Die Vorgehensweise für die Erstellung der ITcSysManager-Schnittstelle (hier die 'sysMan'-Instanz) wird im Kapitel Auf TwinCAT-Konfigurationen zugreifenbeschrieben.

Beispiel (CSharp):

Beachten Sie, dass Sie für dieses Beispiel Ihrem Projekt sowohl eine Referenz auf "Microsoft Developer Environment 10.0", als auch auf "Beckhoff TwinCAT XAE Base" hinzufügen müssen.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EnvDTE100;
using System.IO;
using TCatSysManagerLib;

namespace ActivatePreviousConfiguration
{
class Program
{
static void Main(string[] args)
{
Type t = System.Type.GetTypeFromProgID("VisualStudio.DTE.10.0");
EnvDTE.DTE dte = (EnvDTE.DTE)System.Activator.CreateInstance(t);
dte.SuppressUI = false;
dte.MainWindow.Visible = true;

EnvDTE.Solution sol = dte.Solution;
sol.Open(@"C:\Temp\SolutionFolder\MySolution1\MySolution1.sln");

EnvDTE.Project pro = sol.Projects.Item(1);

ITcSysManager sysMan = pro.Object;

sysMan.ActivateConfiguration();
sysMan.StartRestartTwinCAT();
}
}
}

Beispiel (PowerShell):

$prjDir = "C:\tmp\TestSolution\"
$prjName = "TestSolution.sln"
$prjPath = $prjDir += $prjName
$dte = new-object -com VisualStudio.DTE.10.0
$dte.SuppressUI = $false
$dte.MainWindow | %{$_.gettype().InvokeMember("Visible","SetProperty",$null,$_,$true)}

$sln = $dte.Solution
$sln.Open($prjPath)

$project = $sln.Projects.Item(1)
$systemManager = $project.Object

$systemManager.ActivateConfiguration()
$systemManager.StartRestartTwinCAT()

Beispiel (VBScript):

dim dte,sln,proj,sysMan 
set dte = CreateObject("VisualStudio.DTE.10.0")
set sln = dte.Solution
call sln.Open("C:\SolutionFolder\MySolution1.sln")
set proj = sln.Projects(1)
set sysMan = proj.Object
call sysMan.ActivateConfiguration
call sysMan.StartRestartTwinCAT