OK thx ...
ja das scheint die Erklärung zu sein...
Na nur gut das VS 2022 in 2 Wochen kommt...
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.
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.
wieso funktionieren meine ableitungen nicht ?
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
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.
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
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
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 gingxml.LoadXml(xml_filemname); schmeisst ne exception
{"Ungültige Daten auf Stammebene. Zeile 1, Position 1."}
da stehen doch wohl 2 fragen drin...
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;
}
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