Laden...
Y
Yeats
myCSharp.de - Member
29
Themen
104
Beiträge
Letzte Aktivität
vor einem Monat
Dabei seit
11.11.2005
Alter
37
Herkunft
Österreich
Erstellt vor 2 Monaten

Unity unterstützt zwar Properties, allerdings mit Einschränkungen. Getter im Editor werden akzeptiert, allerdings keine Setter.

Erstellt vor 2 Monaten

Anstelle von zwei Arrays die via Index miteinander verknüpft sind, kannst du dir eine Klasse aufbauen z.B.

public class Item : MonoBehavior{
[SerializeField] private string _name;
[SerializeField] private int _amount;

public string GetName() => _name;
public int GetAmount() => _amount
}

Dann kannst du in deinem eigentlichen Skript Items in einem Array verwenden und die Werte dort sehen und ändern.

Erstellt vor 2 Jahren

Danke @Abt

Die jeweilige Distro ist dafür verantwortlich, welche Version sie reinnehmen, wann sie aktualisieren und releasen - nicht Microsoft.

Das ist mir bewusst.

Distros übernehmen jedoch meistens nur LTS Releases, was .NET 7 jedoch nicht ist. In .NET (wie auch bei Node...) sind immer gerade Zahlen LTS Releases.

Ahh, verstehe.

Danke für die Info.

Grüße

Erstellt vor 2 Jahren

Guten Morgen,

Ist das Net7 SDK schon in den jeweiligen Linux Repositories verfügbar? Bis jetzt sehe ich nur die SDK's für 6.0. Oder gibt es eine Seite, wo man den Status dazu sieht?

Grüße

Erstellt vor 2 Jahren

Danke für die Antwort Abt.

Ich hatte eine solche Antwort erwartet. Danke für die Bestätigung!

Erstellt vor 2 Jahren

Danke für die Antwort T-Virus.

Momentan arbeite ich auch mit JToken, JObject, JArray. Aber damit allokiere ich zu viel Speicher.

Die Struktur unterscheidet sich in einigen Properties/neue Klassen.

Zwar wäre es für mich möglich, die Klassenhierarchie dementsprechend anzupassen, aber Anpassungen müssten dann immer übernommen werden und ich verliere die Resilienz, die ich aktuell habe.

Erstellt vor 2 Jahren

Verwendetes Datenbanksystem: json

Hallo

Arbeite an einem Unity3D Projekt, welches nach WebGL übersetzt wird, und einen Produktkatalog abbilden soll.

Das Projekt empfängt einen JSON-String (~4MB) der deserialisiert werden muss, um die interne Datenstruktur aufbauen zu können.
Dieser JSON-String besteht dabei aus einem Teil, der von mir kontrolliert wird und aus einem Teil, der von anderen Web-API's befüllt wird.

Die Deserialisierung erfolgt momentan über selbstgeschriebene Klassen, die von JsonConvert erben, da ich damit große Teile des JSON-Strings nicht verarbeiten muss --> hilft mir auch damit, dass ich Änderungen im Teil, die für die interne Struktur irrelevant sind, nicht übernehmen muss.

Aktuell läuft das auch sehr gut und zeigte sich auch gegenüber Änderungen resilient.

Das Problem ist, dass ich damit im Browser einen großen Teil des Heap belaste. Wenn der JSON-String anwächst (≥10MB) bekomme ich damit ein Problem, dass ich nun über den für Unity zugewiesenen Speicherbereich komme und der Unity-Kontext abstürzt.

Auch habe ich die Komponente, die für die Deserialisierung zuständig ist, in einem eigenen nuget in Unity eingebunden. Dieses Nuget-Paket hat eine Abhängigkeit zu Newtonsoft.Json v. 13.0.1.

Jetzt wollte ich diesen Teil überarbeiten, habe mir für die Json-Struktur eine entsprechende Klassenhierarchie geschrieben und über JsonConvert.DeserializeObject auch de-serialisieren können.
Die Benchmarks haben dafür auch einen deutlichen Vorteil gezeigt:

Method Mean Error StdDev Gen0 Gen1 Allocated
Convert_First 43.47 ms 0.505 ms 0.448 ms 250.0000 83.3333 26.54 MB
Convert_Second 45.25 ms 0.491 ms 0.435 ms - - 5.82 MB

Wobei Convert_First der selbstgeschriebene Ansatz war und Convert_Second über JsonConvert.DeserializeObject.

Allerdings stehe ich jetzt vor dem Problem, dass die letzte Version der API, über die der JSON-String kommt, die Struktur etwas geändert hat (im Teil, der nicht in meiner Kontrolle liegt).
Zwar wäre es für mich möglich, die Klassenhierarchie dementsprechend anzupassen, aber Anpassungen müssten dann immer übernommen werden und ich verliere die Resilienz, die ich aktuell habe.

Die Interfaces, die benutzt werden für den Aufbau des JSON-Strings, sind hierbei in TypeScript geschrieben.

Welchen Ansatz könnte ich nun verfolgen, um einerseits die jetzige Flexibilität beizubehalten, aber gleichzeitig den allokierten Speicher gering zu halten?

Grüße,
Yeats

Erstellt vor 3 Jahren

Hallo,

Seit ca. 1 Monat bekomme ich häufig beim Start von Visual Studio 2019 Community Edition (Version 16.8.4) folgende Fehlermeldung:

Fehlermeldung:
StreamJsonRpc.ConnectionLostException : The JSON-RPC connection with the remote party was lost before the request could complete.
at async StreamJsonRpc.JsonRpc.InvokeCoreAsync(<Unknown Parameters>)
at async StreamJsonRpc.JsonRpc.InvokeCoreAsync[TResult](<Unknown Parameters>)
at async Microsoft.CodeAnalysis.Remote.RemoteEndPoint.InvokeAsync[T](<Unknown Parameters>)
at Microsoft.VisualStudio.Telemetry.WindowsErrorReporting.WatsonReport.GetClrWatsonExceptionInfo(Exception exceptionObject)

Ich hatte schon versucht, Erweiterungen zu deaktivieren und zu deinstallieren, Visual Studio mehrmals neu installiert.

Auf github gibt es dazu zwar schon einen Eintrag: github. Allerdings bin ich mir nicht sicher in welchem "nächsten" Release das behandelt wird, da es schon im April letztes Jahr berichtet wurde und in dem letzten Release von Januar dieses Jahres hat es auf alle Fälle nicht behoben.

Das Problem ist, sobald dieser Fehler kommt, werden Klassen nicht mehr erkannt und ein einfaches Navigieren zu diesen ist nicht mehr möglich. Die "Error List" aktualisiert sich nicht mehr.

Hat jemand eine Idee wie man diesen Fehler umgehen kann?
Mit freundlichen Grüßen

Erstellt vor 4 Jahren

Hallo,

Mittels IronPython kannst du dir in einem C# Programm eine Python ScriptEngine erstellen wo du dann entweder ein Python Skript, oder ein Python File von einem Ordner laden könntest.

Sowas könnte so aussehen:


using System;

using IronPython.Hosting;


namespace Test
{
    public class Program
    {
        public static void Main (string[] args)
        {
            //var engine = Python.CreateEngine();
            //var scope = engine.ExecuteFile("hello.py");

            var engine = Python.CreateEngine();
            engine.Execute("print \"Hello World from Python\"");
            
            Console.ReadKey();
        }
    }
}

Ob du damit ein Python 3.* ansprechen kannst, weiß ich allerdings nicht.

Ansonsten natürlich auch die Ausführung über CLI wie Taipi88 schon beschrieben hat.

Erstellt vor 5 Jahren

Bower muss installiert werden.

npm install -g bower

Allerdings, dass weiß vielleicht jemand anderes besser, wird Bower selten verwendet.

10 von 104 Beiträgen