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:
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; 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;
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 Th69: C#-Tags hinzugefügt