Laden...
K
Kaladial
myCSharp.de - Member
12
Themen
54
Beiträge
Letzte Aktivität
vor 3 Jahren
Dabei seit
25.10.2017
Erstellt vor 3 Jahren

OK thx ...
ja das scheint die Erklärung zu sein...

Na nur gut das VS 2022 in 2 Wochen kommt...

Erstellt vor 3 Jahren

ich hab hier einfach mal ein Mimi Projekt erstellt um zu verdeutlichen was ich meine.

Also es ist ein Form und ein User Control mit einer simplen TextBox.

Das User Control hab ich nach dem compilieren per Designer und Drag and Drop in das User Control gezogen.
Alles noch als mein Projekt noch auf Any CPU stand.

Nun habe ich auf x64 gestellt und einmal das Projekt erstellt und habe nun versucht Form1 zu öffnen.

Und bekomme genau diesen Fehler.

Erstellt vor 3 Jahren

Hi

erstmal als angehängtes Bild meine Build-Optionen. Die sind und waren hier auch die ganze Zeit auf x64.

also: was ich bisher raus gefunden habe:
Sobald ich ein Projekt auf x64 stelle und in diesem Projekt eigene UserControls in ein anderes Control ziehe gibt das System mir den Fehler siehe oben aus.
Das passiert wenn ich im selben Projekt 2 User Controls habe und eins ins andere ziehe das passiert auch wenn ich aus einem anderen Projekt ein User Control verwende.

  1. Ich hab eine Ableitung einer Textbox in einem meiner Controls.
    Das überschreibt einige Dinge ...
    wenn ich das alles raus nehme, und nur die simple Ableitung im quellcode lasse und auf x64 stelle funktioniert das nicht
    wenn ich statt meiner Ableitung meines user controls die default text box im designer eintrage, dann funktioniert das..

wieso funktionieren meine ableitungen nicht ?

Erstellt vor 3 Jahren

Hallo,

ich habe Probleme mit einem bestehenden Projekt.
Die Projektmappe umfasst mehr als 50 Projekte die zu diesem Programm gehören
und ich will die nun von x86 auf x64 umstellen, da eine Komponente des Systems nur noch x64 unterstützt.

Ich habe das also entsprechend umgestellt und die Software lässt sich auch entsprechund compilieren und auch ausführen und es funktioniert alles.

Das Problem was ich hab befindet sich im Visual Studio 2019. Wenn ich dort verschiedene Guis aufmachen will bekomm ich extrem viele Fehler.
Also von meinen 100 user controls lassen sich ca die hälfte nicht öffnen.

Teilweise habe ich user controls geschrieben und die dann über Tools in andere rein gezogen. Da sagt mir der Designer auf einmal:

Fehlermeldung:
Der Typ "GUI.UserControls.ucGroupControl" wurde nicht gefunden. Stellen Sie sicher, dass auf die Assembly, die diesen Typ enthält, verwiesen wird. Wenn dieser Typ Teil Ihres Entwicklungsprojekts ist, stellen Sie sicher, dass das Projekt mithilfe der Einstellungen für die aktuelle Plattform oder eine beliebige CPU erstellt wurde.

Und solche Fehler hab ich ganz viele.

Was ist das und wie beheb ich das?

Mfg Kaladial

Erstellt vor 4 Jahren

ok habs selbst raus gefunden...


private void btnTest_Click(object sender, EventArgs e)
        {
            string batchnr = "2005368";
            string exp = "2023-07-26";
            string mad = "2020-07-26";
            string gtin = "06221032240262";
            string workorder_code = "242040_2005368_1";
            string[] sn = {"200536810100508", "200536810100509", "200536810100510"};
            string status = "Accepted";


            XElement xmlTree1 = new XElement("SERIALIZED_ITEM");


            for (int i = 0; i < sn.Length; i++)
            {
                xmlTree1.Add(new XElement("SERIALIZED_ITEM",
                new XAttribute("SERIAL", sn[i]),
                new XAttribute("Status", status)));
            }


            XNamespace xsiNs = "http://www.w3.org/2001/XMLSchema-instance";
            XDocument xDoc = new XDocument(
                new XDeclaration("1.0", "UTF-8", ""),
                new XElement("PRODUCTION_IMPORTATION",
                    new XAttribute(XNamespace.Xmlns + "xsi", xsiNs),
                    new XAttribute(xsiNs + "noNamespaceSchemaLocation", "Batch.xsd"),
                    new XElement("BATCH",
                        new XAttribute("BATCH_NUMBER", batchnr),
                        new XAttribute("MANUFACTURE_DATE", mad),
                        new XAttribute("EXPIRATION_DATE", exp),
                        new XElement("WORKORDER",
                            new XAttribute("GTIN", gtin),
                            new XAttribute("WORKORDER_CODE", workorder_code),
                            from el in xmlTree1.Elements()
                            select el
                        )
                    )
                )
            );

            xDoc.Save("text.xml");
        }

nur noch eine frage der verständnis halber:

warum muss ich


 XElement xmlTree1 = new XElement("SERIALIZED_ITEM");

dieses element erzeugen?
eigentlich adde ich doch das hinzu.

Erstellt vor 4 Jahren

hi

ich muss eine forschleife um


xDoc.Root.Add(new XElement("SERIALIZED_ITEM",
                        new XAttribute("SERIAL", sn),
                        new XAttribute("Status", status)
            ));

setzen, da ich die elemente dynamisch aus einer DB in ein File schreiben will und das geht nicht innerhalb des 1. befehls. also hab ich mittels dem Add versucht dies hinzuzufügen. Mir war fast klar, das .Root das falsche ist, aber nur .Add hat nicht funktioniert.

Wie gebe ich also an, wenn ich den 1. Befehl so hab, das das, was in meiner For-Schleife an die richtige Position kommt, das hab ich bisher in den Dokus die ich gelesen hab, nicht gefunden.

Mfg Kala

Erstellt vor 4 Jahren

Hi

ich muss eine XML datei erzeugen.

bisheriger code:


string batchnr = "2005368";
            string exp = "2023-07-26";
            string mad = "2020-07-26";
            string gtin = "06221032240262";
            string workorder_code = "242040_2005368_1";
            string sn = "200536810100508";
            string status = "Accepted";

            XNamespace xsiNs = "http://www.w3.org/2001/XMLSchema-instance";
            XDocument xDoc = new XDocument(
                   new XDeclaration("1.0", "UTF-8", "no"),
                   new XElement("PRODUCTION_IMPORTATION",
                       new XAttribute(XNamespace.Xmlns + "xsi", xsiNs),
                       new XAttribute(xsiNs + "noNamespaceSchemaLocation", "Batch.xsd"),
                       new XElement("BATCH",
                           new XAttribute("BATCH_NUMBER", batchnr),
                           new XAttribute("MANUFACTURE_DATE", mad),
                           new XAttribute("EXPIRATION_DATE", exp),
                           new XElement("WORKORDER",
                               new XAttribute("GTIN", gtin),
                               new XAttribute("WORKORDER_CODE", workorder_code)
                            )
                        )
            ));

            xDoc.Root.Add(new XElement("SERIALIZED_ITEM",
                        new XAttribute("SERIAL", sn),
                        new XAttribute("Status", status)
            ));

            xDoc.Root.Add(new XElement("SERIALIZED_ITEM",
                        new XAttribute("SERIAL", sn),
                        new XAttribute("Status", status)
            ));
            xDoc.Save("text.xml");

ergebnis:

<?xml version="1.0" encoding="utf-8" standalone="no"?>
<PRODUCTION_IMPORTATION xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Batch.xsd">
  <BATCH BATCH_NUMBER="2005368" MANUFACTURE_DATE="2020-07-26" EXPIRATION_DATE="2023-07-26">
    <WORKORDER GTIN="06221032240262" WORKORDER_CODE="242040_2005368_1" />
  </BATCH>
  <SERIALIZED_ITEM SERIAL="200536810100508" Status="Accepted" />
  <SERIALIZED_ITEM SERIAL="200536810100508" Status="Accepted" />
</PRODUCTION_IMPORTATION>

das ist leider nur fast richtig...

die
<SERIALIZED_ITEM SERIAL="200536810100508" Status="Accepted" />
<SERIALIZED_ITEM SERIAL="200536810100508" Status="Accepted" />

sollen innerhalb des WORKORDER stehen.
wie bekomm ich die also höher in die xml rein?

das eigentliche ziel ist das:


<?xml version="1.0" encoding="utf-8"?>
<PRODUCTION_IMPORTATION xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="Batch.xsd">
  <BATCH BATCH_NUMBER="2005368" MANUFACTURE_DATE="2020-07-26" EXPIRATION_DATE="2023-07-26">
    <WORKORDER GTIN="06221032240262" WORKORDER_CODE="242040_2005368_1">
          <SERIALIZED_ITEM SERIAL="200536810100508" Status="Accepted"/>
          <SERIALIZED_ITEM SERIAL="200536810100516" Status="Accepted"/>
    </WORKORDER>
  </BATCH>
</PRODUCTION_IMPORTATION>

mfg kala

Erstellt vor 4 Jahren

aber wie les ich das aus ?

ich hatte überlegt das mit der variante zu machen:

  
  
            XmlDocument xml = new XmlDocument();  
            xml.LoadXml(xml_filemname);   
  
            XmlNodeList xnList = xml.SelectNodes("???");  
            foreach (XmlNode xn in xnList)  
            {  
                string ppo = xn["ppo"].InnerText;  
            }  
  

aber was muss ich da bei ??? eingaben?
mal davon abgesehn das das auch nicht ging

xml.LoadXml(xml_filemname); schmeisst ne exception
{"Ungültige Daten auf Stammebene. Zeile 1, Position 1."}

da stehen doch wohl 2 fragen drin...

Erstellt vor 4 Jahren

ich habs jetzt so:


try
            {
                xmlF = new XMLFile();

                string ppo = "";
                string lotNumber = "";
                string expirationDate = "";
                string productionDate = "";

                XmlDocument xml = new XmlDocument();
                xml.Load(xml_filemname);

                XmlNodeList xnList = xml.SelectNodes("/order/par");
                foreach (XmlNode xn in xnList)
                {
                    if (xn.OuterXml.Contains("ppo"))
                    {
                        ppo = xn.InnerText;
                    }
                    if (xn.OuterXml.Contains("lotNumber"))
                    {
                        lotNumber = xn.InnerText;
                    }
                    if (xn.OuterXml.Contains("expirationDate"))
                    {
                        expirationDate = xn.InnerText;
                    }
                    if (xn.OuterXml.Contains("productionDate"))
                    {
                        productionDate = xn.InnerText;
                    }
                }
                string gtin = "";
                string levelQty = "";
                List<string> sgtinSerial = new List<string>();

                xnList = xml.SelectNodes("/order/level/par");
                foreach (XmlNode xn in xnList)
                {
                    if (xn.OuterXml.Contains("gtin"))
                    {
                        gtin = xn.InnerText;
                    }
                    if (xn.OuterXml.Contains("levelQty"))
                    {
                        levelQty = xn.InnerText;
                    }
                    if (xn.OuterXml.Contains("sgtinSerial"))
                    {
                        //sgtinSerial = xn.InnerText;
                    }

                }

                xnList = xml.SelectNodes("/order/level/par/el");
                foreach (XmlNode xn in xnList)
                {
                    sgtinSerial.Add(xn.InnerText);
                }

                xmlF.ppo = ppo;
                xmlF.gtin = gtin;
                xmlF.lotNumber = lotNumber;
                xmlF.expirationDate = expirationDate;
                xmlF.productionDate = productionDate;
                xmlF.countSN = levelQty;
                xmlF.sgtinSerial = sgtinSerial;
            }
            catch (Exception ex)
            {
                string e = ex.Message;
            }

Erstellt vor 4 Jahren

habs selber raus gefunden

sinnvoller wäre aber der hinweis, das zum einen Load nicht LoadXML benutzt werden muss
und 2. das die Pfade immer die 1. elemente in dem xml sind

also das ich /order/par
oder /order/level/par/el schreiben muss um an die inhalte ran zu kommen und das die als "name"
beschriebenen elemente überhaupt keine wirkung haben und man sie nur im outer text findet...

das wären sinnvolle hilfen gewesen