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 Microsoft Visual Studio® verwendet. Über das Visual Studio DTE-Objekt ist eine volle Kontrolle über Microsoft Visual Studio® möglich. Die Vorgehensweise für die Erstellung der ITcSysManager-Schnittstelle (hier die 'sysMan'-Instanz) wird im Kapitel Auf TwinCAT-Konfigurationen zugreifen beschrieben.

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 systemManager = pro.Object as ITcSysManager;

         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