Unable to load project or solution in Visual Studio 2022
Windows 10
After updating Visual Studio you are no longer able to load source files in your solution
Error message: Load failed, the project file cannot be loaded
The update has messed up you path settings as you have both 64bit and 32bit version of dotnet running
In the environment settings / system variables move the <drive>\program files\dotnet 64bit path above the <drive>\program files (x86)\dotnet 32bit path
Save and you are ready to use VS 2022 after having updated the platform to latest version
Open Control panel -> System and the Advanced System Settings
Choose Environment Variables
In System Variables edit the Path settings
Move the 64 bit dotnet path above the 32bit path
When done click Ok and restart VS 2022
C# .NET Core 6: Get rootname, namespace or DTD using xmlreader
using (var stream = new MemoryStream())
{
FormFile?.CopyTo(stream);
stream.Seek(0, SeekOrigin.Begin);
var settings = new XmlReaderSettings()
{
// Parse file but do not reolve
DtdProcessing = DtdProcessing.Parse,
XmlResolver = null
};
using (var reader = XmlReader.Create(stream, settings))
{
var done = false;
while (reader.Read() && !done)
{
// something weird happened, bail out
//if (reader.EOF)
// return;
switch (reader.NodeType)
{
// Assume cXML
case XmlNodeType.DocumentType:
DocumentType = reader.GetAttribute("SYSTEM") + "";
break;
case XmlNodeType.Element:
switch (reader.LocalName)
{
// Assume an UBL dpcument of some kind
case "CustomizationID":
reader.Read();
SetCustomization(reader.Value);
break;
// Only OIOUBL, done and exit
case "UBLlVersionID":
reader.Read();
UblVersion = reader.Value;
done = true;
break;
// Only OIOXML, done and exit
case "TypeCode":
reader.Read();
TypeCode = reader.Value;
done = true;
break;
default:
if (string.IsNullOrEmpty(RootName))
{
RootName = reader.Name;
SetNamespace(reader.NamespaceURI);
}
break;
}
break;
}
}
reader.Close();
}
}
23. July 2023
plykkegaard
An utility to retrieve current year
This is a procedure to use in Seeburger BIC Mapping Designer
/* -----------------------------
Peter Lykkegaard, 25 apr 2023
-----------------------------
procedure getUUID
Parameters:
None
Output
String
Get ramdom UUID
----------------------------- */
#importJavaStart
import java.util.UUID;
#importJavaEnd
local
lvOutput$;
#javastart
_StrVar_LVOUTPUT.setString(UUID.randomUUID().toString());
#javaend
exitProc(lvOutput$);
An utility to decode or unescape HTML characters in XML (EDI) documents
This is a procedure to use in Seeburger BIC Mapping Designer
It will extend your library for string handling
/* -----------------------------
Peter Lykkegaard, 25 apr 2023
-----------------------------
procedure unescapeHTML
Parameters:
Source / String, alphanumeric
Output
String, alphanumericString
Adapted from How to Unescape HTML in Java using Plain Java
https://howtodoinjava.com/java/string/unescape-html-to-string/
----------------------------- */
local lvOutput$;
#importJavaStart
import java.util.HashMap;
#importJavaEnd
// Save source in case changes are not needed
copy pSource$ to lvOutput$;
// Check for any ampersand / & character
if (containsSubstring(pSource$, "&") != 0)
if (containsSubstring(pSource$, "&") != 0)
// HTML decode ampersand / &
copy replaceAll(pSource$, "&", "&") to pSource$;
endif
#javastart
int i, j;
boolean continueLoop;
int skip = 0;
HashMap<String, String> htmlEntities = new HashMap<String, String>();
htmlEntities.put("<", "<");
htmlEntities.put(">", ">");
htmlEntities.put("&", "&");
htmlEntities.put(""", "\"");
htmlEntities.put(" ", " ");
htmlEntities.put("©", "\u00a9");
htmlEntities.put("®", "\u00ae");
htmlEntities.put("€", "\u20a0");
htmlEntities.put("Å", "Å");
htmlEntities.put("Æ", "Æ");
htmlEntities.put("Ø", "Ø");
htmlEntities.put("å", "å");
htmlEntities.put("æ", "æ");
htmlEntities.put("ø", "ø");
String source = _StrVar_PSOURCE.getString();
do {
continueLoop = false;
i = source.indexOf("&", skip);
if (i > -1) {
j = source.indexOf(";", i);
if (j > i) {
String entityToLookFor = source.substring(i, j + 1);
String value = (String) htmlEntities.get(entityToLookFor);
if (value != null) {
source = source.substring(0, i) + value + source.substring(j + 1);
continueLoop = true;
} else if (value == null) {
skip = i + 1;
continueLoop = true;
}
}
}
} while (continueLoop);
_StrVar_LVOUTPUT.setString(source);
#javaend
endif
exitProc(lvOutput$);