Autor Beitrag
C#David Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 14.12.17 11:05 
Ich versuche die Referenz "_sysManager" jetzt über eine Solution zu "holen". Meine Solution ist in den Fall ein fertiges TwinCAT-Projekt (Endung: .sln/), welches ich dann auch mit meinen C#-Programm bearbeiten möchte.
Codeabschnitt:
ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnostics;
using System.Reflection;

using TCatSysManagerLib;
using System.IO;

using EnvDTE;
using EnvDTE80;
using EnvDTE90;
using EnvDTE100;

namespace LinkVariablesTC2
{    

    class Program
    {
        private static string _tsmPath = Path.GetDirectoryName(Assembly.GetEntryAssembly().Location) + "\\Templates\\Sample.tsm";
        private static TcSysManager _sysManager;    
        
        static void Main(string[] args)
        {
            DTE2 dte = null;
            Solution4 solution = null;
            EnvDTE.Project pro;
            Type t = null;
            ITcSysManager4 sysManager = null;
            //Aufrufpfad nach der Syntax Laufwerk:\\Ordner\\Ordner...\\Dateiname.sln
            string SolPath = "Aufrufpfad";

            t = System.Type.GetTypeFromProgID("VisualStudio.DTE.11.0");
            dte = (EnvDTE80.DTE2)System.Activator.CreateInstance(t);
            dte.SuppressUI = false;
            dte.MainWindow.Visible = true;
            dte.UserControl = true;

            // Silent Mode aktivieren
            var settings = dte.GetObject("TcAutomationSettings");
            settings.SilentMode = true;

            solution = (Solution4)dte.Solution;

            try
            {
                solution.Open(SolPath);
            }

            catch (Exception e)
            {
                Console.WriteLine("Beim Aufrufen der Solution wird folgende Exception geworfen: {0}", e.Message.ToString());
            }
            System.Threading.Thread.Sleep(500);
            pro = solution.Projects.Item(1);
            _sysManager = pro.Object();
            ...
            ...
         }
     }
}

Beim Öffnen der Datei/Solution-Files erhalte ich jetzt die in Anhang befindliche Fehlermeldung. Wie kann ich diesen Fehler beheben?
Den Dateipfad habe ich schon mehrfach übeprüft...Ich hatte gelesen, dass man den Fehler auch mit früher/ später Bindung irgendwie umgehen kann? Besten Dank!!!

Moderiert von user profile iconTh69: C#-Tags hinzugefügt
Einloggen, um Attachments anzusehen!
C#David Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 14.12.17 13:02 
Hier steht auch noc etwas zur Vorgehensweise:

download.beckhoff.co...Interface_pdf_DE.pdf
C#David Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 39



BeitragVerfasst: Do 14.12.17 15:59 
Hey Leute,

es hat tatsächlich an den Klammern im Aufrufpfad gelegen :). Trotzen vielen vielen dank für eure schnelle und kostruktive Hilfe!!

Gruß
David
Niklas95
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Di 26.11.19 19:36 
Hallo, ich bin neu hier und habe genau die gleiche erste Fehlermeldung bei dem gleichen Beispuiel von Beckhoff. Ich verstehe nur nicht, wie das Problem mit dem letzten Code gelöst wurde und welche Klammern im AufrufPfad gemeint sind. Ich würde ebenfalls gerne ein bestehndes TwinCAT Projekt bearbeiten.

Über eine Antwort würde ich mich freuen.
Th69
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Moderator
Beiträge: 4764
Erhaltene Danke: 1052

Win10
C#, C++ (VS 2017/19/22)
BeitragVerfasst: Mi 27.11.19 11:11 
Die MissingMethodException kommt wegen falscher Verwendung, richtig ist wohl der Zugriff über die VS-Integration (wie im letzten Code - und dort wurde dann wohl ein falscher Aufrufpfad angegeben).