Laden...

Forenbeiträge von Blacal Ingesamt 387 Beiträge

03.02.2013 - 08:10 Uhr

Hallo zusammen,

ist schade, dachte mir aber, dass genau sowas kommt. Immer, wenn man zurzeit von Microsoft etwas in Richtung Windows 8 und DirectX liest, ist auch so gut wie immer von C++ die Rede. Scheint für mich fast so, als ob Microsoft hier wieder mehr auf das klassische C++ / DirectX Bundle setzen möchte. Macht ja auch Sinn, da die Hardware von Windows Phone und Tablets im Vergleich zum PC viel schlechter sind und damit C# erst einmal für Spiele auch nicht wirklich sinnvoll sein kann.

Was ich aber empfehle:
Wie weiter oben schon angedeutet wurde, gibt es aktuell jede Menge Entwicklungen in der OpenSource-Welt, die die Lücke von XNA schließen wollen. Hier einige Beispiele:

ANX-Framework - Die nehmen sich vor, die XNA API auf Basis von OpenGL, DirectX 11 usw. nachzuprogrammieren.

SharpDX - In seinem Ursprung ein Thin-Wrapper der DirectX API. Aktuell wird hier aber auch an ein "Toolkit" gearbeitet, welches sich an die XNA-API anlehnen soll. Über diese Library können übrigens auch Spiele für Windows 8 Metro entwickelt werden.

MonoGame - Weiter oben schon erwähnt. Die gehen gezielt den Plattformunabhängigen weg und peilen z. B. auch Android-Geräte an.

Übrigens klappt es auch ganz gut, per C# Windows 8 Store Apps mit 3D-Grafik zu machen. Mosaic Snake 3D ist ein Beispiel direkt von mir, welches C# und SharpDX nutzt, um 3D Sachen auf den Bildschirm zu bekommen. Das läuft auch absolut flüssig auf dem Windows Surface RT Tablet.

Gruß
Roland

21.12.2012 - 12:43 Uhr

Hi daTom,

meines wissens muss man sich schon darum kümmern, dass zum Beispiel PropertyChanged im UI-Thread aufgerufen wird - zumminderst kümmere ich mich immer drum.

Was ich mir aber vortellen kann: WCF und auch andere Technologien verwenden oft standardmäßig schon das aktuelle SynchronizationContext für asynchrone CallBack-aufrufe. Würde also heißen, dass sich das bei dir aufgrund der verwendeten Technologie erledigt hat. Man kann es aber nicht genau sagen, dazu müsste man den Code angucken. Oder du Debugst mal an der Stelle rein, an der die GUI aktualisiert wird bzw. das PropertyChanged aufgerufen wird. Dann siehst du auch, von welchem Thread du da eigentlich kommst.

Gruß
Roland

12.10.2012 - 07:04 Uhr

Mit Google relativ schnell zu finden:
Babel Obfuscator
EDIT: Soll keine Werbung sein. Kannte den hier bis vor 5 Minuten nicht und es gibt sicherlich auch andere 😉

Wichtig ist auch zu wissen, dass das Gleiche auch für Html/Javascript Apps gilt. Auch hier müsste man den Quellcode obfuscieren.

Gruß
Roland

12.10.2012 - 05:26 Uhr

Hi Kollegen,

schelchte Nachricht an euch:
Man kommt relativ Problemlos ran. Jede WinRT App wird in C:\Program Files\WindowsApps installiert. Zwar hat der Ordner standardmäßig einen anderen Besitzer, den kann man aber umstellen, damit man den Ordner anguken kann. Ist man erst drin, kann man von verwalteten Programmen die Assemblies per ILSpy angucken.

EDIT: Hier noch ein Artikel dazu:
Reverse Engineering and Modifying Windows 8 apps

Gruß
Roland

09.10.2012 - 18:45 Uhr

Hi,

ich habe jetzt die letzten paar Beiträge nur überflogen, aber noch ein Gedanke von mir:
Bei meinen Programmen hatte ich das Gleiche Problem. Ich hatte mehrere DataGrids und diverse Masken, die jeweils ein einzelnes Objekt bearbeiten. Für das Change-Tracking habe ich dabei nicht die ViewModel- oder Model-Objekte überwacht, sondern die View. Ich habe also Observer-Objekte, welche sich an die Ereignisse von TextBoxen, ComboBoxen, DataGrids usw. hängen können und dafür sorgen, dass für jede Änderung ein entsprechender Command erzeugt wird, welche die Änderung wieder Rückgängig machen kann.

Nachteil an dem Vorgehen ist, dass man in jedem Oberflächen-Control auch das Change-Tracking mit einbauen muss. Vorteil ist, dass man direkt auf die einzelnen Controls und dabei auf die Aktionen des Benutzers eingehen kann. Trackt man das ViewModel oder das Model selbst, so stelle ich mir es schwer vor, die einzelnen Änderungen auch zu Aktionen des Users zuzuordnen, welche ja oft mehrere Änderungen am Model bewirken können.

Achja: Dieses Vorgehen gilt hauptsächlich für alle Eingabeflächen im Programm. Für Buttons o. Ä., welche irgendwas machen, erstelle ich je nach Anforderung ein entsprechendes Command - auch wenn dieses nur aus mehreren Unter-Commands besteht.

Gruß
Roland

09.10.2012 - 06:01 Uhr

Hi,

ich bin gerade dabei auf WIX umzusteigen (bei einem Projekt schon durch) und habe bis jetzt eigentlich hauptsächlich gute Erfahrungen damit gemacht. Es ist zwar erst mal was anderes, "nur" Xml-Dateien zu editieren, aber man findet stehts schnell die richtigen Einstellungne für das, was man vor hat per Google.

.. hätte übrigens auch noch nicht mitgekommen, dass es nicht stabil wäre.

Gruß
Roland

08.10.2012 - 19:56 Uhr

Hi,

was hast du da genau für ein Problem?
Was mich auch interessieren würde, wäre, inwieweit du eigentlich Serialisierung verwendest. In meinen Lösungen dafür wäre ich noch nie auf den Gedanken gekommen, überhaupt etwas während des Undo/Redo zu serialisieren oder zu deserialisieren. Bei mir läuft Undo/Redo eigentlich immer über die selben Objekte.

Mit meiner Lösung - wie weiter oben beschrieben - bin ich mitlerweile eigentlich recht zufrieden.

Gruß
Roland

07.10.2012 - 15:04 Uhr

wenn es dir nur darum geht, dann schau dir am besten das LINQPad an. Geht eigentlich genau in die Richtung, einzig die Intellisense ist kostenpflichtig.

Ansonsten würde ich eine Weiterentwicklung nicht als eigenständiges Snippet-Tool sehen, sondern als ScriptEditor, den man direkt in sein eigenes Programm integrieren kann. So in die Richtung von VBA oder sowas..

Gruß
Roland

06.10.2012 - 17:42 Uhr

Hi urk0n,

wär ne Idee, das Teil noch etwas auszubauen.
So wie es jetzt ist war es eigntlich nur zum Experimentieren gedacht. In der Arbeit haben wir sowas ähnliches gemacht, nur auf Basis der alten SharpDevelop-Libraries. Das hier in diesem Post basiert zu 100% auf WPF (daher bringt auch Application.EnableVisualStyles() nichts). Mal ungeachtet der fehlenden Features ist diese Komponente hier als Vorlage für jeden zu sehen, der auch so etwas ähnliches nachbauen möchte.

Abgesehen der von dir genannten Punkte gibt es noch ne ganze Latte, die man machen könnte. Z. B. *Icons für die Elemente innerhalb der Intellisense 😉 *Laden, Speichern, ... (das ganze Zeugs halt) *Anzeige von Compilerfehler und -Warnungen *Ein vernünftiger Assembly-Dialog zum hinzufügen von neuen Abhängigkeiten *Suchen und Ersetzen wie von jogibear9988 vorgeschlagen (super Hinweis übrigens!) *Und und und...

Aber so viel Zeit wollt ich darin erst mal noch nicht rein stecken. Bestünde da konkretes Interesse?

Gruß
Roland

06.10.2012 - 08:12 Uhr

Hi urk0n,

habe das Problem gerade gefixt, die Links oben enthalten jetzt die neue Version.

.. wirgendwie komisch. Die Textbox in deinem Screenshot ist nicht weg, sondern die Menüleiste oben klaut sich den gesamten Platz. Unter Windows 8 passiert das nicht, aber auf meinen Windows 7 Laptop konnte ich das nachstellen.

Gruß
Roland

05.10.2012 - 20:16 Uhr

Hi,

ne, leider ist das eine Abhängigkeit von der OpenSource Bibliothek SharpDevelopCodeCompletion. Dort wird ein Behavior verwendet, das man an das AvalonEdit Control ran hängen kann.

Ich sehs grad auch, dass die Dll fehlt. Hätte eigentlich gedacht, dass die mit bei den Nuget Packeten mit drin liegt. Scheinbar ist die bei mir durch VS 2012 oder Win8 automatisch schon drauf.

Hier ein Link zu einem Kompilat mit allen Abhängigkeiten

Gruß
Roland

05.10.2012 - 14:13 Uhr

Ah sorry,
das liegt daran, weil ich an einer Stelle async-await und damit das .Net Framework 4.5 verwendet habe.

Hier eine Version für 4.0 und Visual Studio 2010.
Link

Gruß
Roland

05.10.2012 - 11:45 Uhr

Hallo zusammen,

vor kurzem habe ich mit den aktuellen Komponenten von SharpDevelop rumgespielt, um einen einfachen kleinen C#-Scripteditor zu entwickeln. Herausgekommen ist ein relativ einfacher Editor mit SyntaxHighlighting und Intellisense. Screenshot ist angehängt.

Hier der Download-Link zur Projektmappe (.Net 4.5 / VS2012). Die Umsetzung ist relativ einfach mit den OpenSource-Bibliotheken AvalonEdit und SharpDevelopCodeCompletion. Ein "Compile and Run" Button ist natürlich auch dabei 😉

Hier noch ein Link zu einem Kompilat mit allen Abhängigkeiten (.Net 4.0)

Gruß
Roland

C#-Scripting, Scripteditor, SyntaxHighlighting, Intellisense

26.09.2012 - 10:23 Uhr

Hi,

es geht hier eigentlich um Linux. Folgender Teil aus dem ersten Beitrag hier:

dem Zielsystem nur UNIX, genauer gesagt, Ubuntu verfügbar

ich vermute mal, dass verschiedene Unix-Varianten wie HP-UX oder IBM AIX auch für Mono Probleme machen könnten. Zumindest habe wir, als wir das vor einem Jahr ungefährt kurz untersucht haben, keine wirklichen Erfahrungsberichte auf diesen Systemen gefunden. Offiziellen Support für Mono gabs damals auch nur für Suse Linux, wenn ichs noch richtig im Kopf habe.

Gruß
Roland

08.09.2012 - 09:17 Uhr

Hi,

verstehe ich das richtig, dass du die Verbindung zum SQL-Server in der App.Conf des Clients konfiguriert hast?
Die würde einfach nur in die Konfiguration des Service gehören.

Gruß
Roland

01.09.2012 - 16:27 Uhr

Hi,

hab ich so noch nie gesehen. Wie ladest du denn die Solution ins TFS hoch bzw. wie legst du denn die Projektmappen an?

Im nachhinein solltest du das aber relativ einfach fixen können, und zwar kannst du über die Quellcodeverwaltung die sln-Datei manuel zum TFS hinzufügen. Danach sollte alles wie gewohnt klappen.

Gruß
Roland

25.07.2012 - 12:23 Uhr

Hi,

mit was ließt du denn die CSV-Datei ein? Mit Excel?

Im CSV-Format trennt man normalerweise mit ";" und nicht mit ",", eventuell ist ja das schon das Problem.

Gruß
Roland

22.07.2012 - 15:57 Uhr

Hi,

...Die .NETZ-Executable listet manche Assemblies in AppDomain.CurrentDomain.GetAssemblies() doppelt...

Ich würde dann aber mal genau überprüfen, ob im Programm noch alles so funktioniert, wie es soll. Glaub nicht, dass es ohne Folgen bleibt, wenn Assemblies doppelt geladen werden.

Gruß
Roland

18.07.2012 - 05:35 Uhr

Hi,

zuerst mal muss ich sagen Hää...?
Ich versteh dein Problem ehrlich gesagt nicht so ganz, versuche aber trotzdem mal eine Antwort zu geben.

Ich frage mich gerade, wass das AssemblyResolve bei dir überhaupt für einen Sinn macht. Das Ereignis wird aufgerufen, wenn eine Assembly zu einem Typ nicht gefunden werden kann und bietet die möglichkeit, sie etwa aus einem anderen Pfad o. Ä. zu laden. Bei dir würde eigentlich dieses typeof(EinTypTDerBekanntIst) bereits das Laden der Assembly auslösen, und zwar der Assembly, in der EinTypTDerBekanntIst enthalten ist. Sollte das eine andere sein und du gaukelst der CLR vor, dass das die eigentlich gesuchte Assembly ist, und du kriegst Probleme später im Programm. Ich würde die Assembly nicht per Assembly.GetAssembly(typeof(...)) zurückgeben, sondern innerhalb des Ereignisses einfach die richtige Assembly laden (z. B. aus einer Datei per Assembly.LoadFile Methode).

Gruß
Roland

27.05.2012 - 08:39 Uhr

Hi David-Ilm,

mit Standardmitteln kommst du da nicht weiter. Schau dir mal die OpenSource Libraries PdfSharp oder iTextSharp an, eventuell können die das (weiß ich jetzt aber leider nicht). Alternativ gibt es auch kostenpflichtige Bibliotheken, die so etwas können.

Gruß
Roland

27.05.2012 - 08:36 Uhr

.. oder einfach nur sauber disposen..

Grund für dein Problem ist, dass der FileStream puffert. Das bedeutet, dass etwa ein Aufruf von Write(...) nicht zwingend direkt in der Datei landet, sondern erst einmal im Arbeitsspeicher, um so die Schreibaufrufe auf die Datei zu optimieren. Per Flush oder eben vorm Beenden des Programms per Dispose stellst du sicher, dass auch der Puffer in der Datei landet.

Gruß
Roland

03.04.2012 - 21:39 Uhr

Hallo weismat,

danke für die Info, das schau ich mir morgen einmal an.
Heute bin ich auch noch auf etwas anderes gestoßen:

socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.TypeOfService, tosValue)

Leider hat das unter Windows 7 scheinbar keine Wirkung. Zumindest waren keine Änderungen mit Wireshark auf der Sender und Empfänger Seiter erkennbar.

Du solltest schon wissen, welche Codes/Werte Du in Windows Sockets version 2 API setzen wuerdest.

Das ist kein Thema, den Wert würde ich vorgegeben bekommen. Die Anforderung dafür kommt von einem Netzwerker. Der benötigt im Prinzip nur etwas, anhand dem er Packete priorisieren kann.

Gruß
Roland

02.04.2012 - 16:29 Uhr

Hallo Weismat,

hm.. sehe ich jetzt nicht als sinnvollen weg, auch wenn es so möglich wäre. Wenn ich es richtig verstehe, müsste man so das ganze TCP/IP Protokoll nachprogrammieren, oder?

Gruß
Roland

02.04.2012 - 12:48 Uhr

Hallo Kollegen,

kurze, aber nicht ganz einfache Frage:
Kennt jemand eine Möglichkeit für .Net Sockets einen Quality-of-Service Parameter einzustellen? Es geht darum, um TCP/IP Packete zu priorisieren.

Gruß
Roland

30.03.2012 - 07:09 Uhr

Hi,

Referenzen wirst du nie direkt übergeben können, wenns über die AppDomain oder gar dem Prozess hinaus geht - außer es sind nicht verwaltete Referenzen. Du musst also etwa um Objekte zu übergeben diese Serialisieren. Bei Oberflächen im WinForms bereich gibts Workarounds über die Windows API, WPF bin ich mir jetzt nicht sicher.

System.AddIn habe ich in der Vergangenheit einmal angetestet, bin aber dann bei der eigenen Lösung geblieben. Grund war die relativ hohe Komplexität und der Aufwand, den das Framework erzeugt. Hat sich einfach nicht gerechnet für mich. Also Fazit finde ich das Framework - vorrausgesetzt man möchte wirklich ein absolut solides AddIn Framework haben - aber dennoch sinnvoll.

Gruß
Roland

30.03.2012 - 07:04 Uhr

Hi Rabban,

ich beschäftige mich selber seit einer Weile mit REST, m. E. sollte es schon drin sein. Aber: Die Logik, dass das PrincipalPermission Attribute korrekt angewendet wird, wirst du wohl oder übel selber schreiben müssen. Besonders dann, wenn du mit einem eigenen Session-Key arbeitest.

Über welchen Weg möchtest du eigentlich das REST-API zur verfügung stellen? Über die Funktionen, die WCF im Framework 3.5 / 4.0 hat oder bereits mit der ASP.Net WebApi in .Net 4.5?

Gruß
Roland

09.03.2012 - 05:52 Uhr

Hallo Kollegen,

wo liegt das Problem?
Wenn man nur mit SPS reden will, braucht man ja nicht Echtzeitfähig sein. Wenn du zum Beispiel Meldungen hast, bei denen eine Verarbeitungszeit ~ 100 bis 200ms reicht, dann hast du definitiv keine Probleme. Draußen gibts auch Lösungen, bei denen SAP- oder andere ERP-Systeme direkt mit der SPS reden.

Du musst auch mit bedenken, dass ne SPS selber eine Zykluszeit hat, nach dem was ich gehört habe auch zum Teil zwischen 30 und 40ms. Da kann der GC schon ein paar mal laufen, bis man die Zeit erreich..

Zum Kommunikationsweg: Frag am besten die SPS'ler, was für beide Seiten am einfachsten ist. TCP/IP Native können die meisten, OPC wär ich vorsichtig, da brauchst du eigene Bibliotheken dafür und die Entwicklung kann am Anfang etwas schwierig sein. Das C# Programm würde ich aber nicht auf einem Windows CE, sondern dann eher auf Embedded aufwärts laufen lassen mit entsprechend guter PC-Hardware.

Wegen Workflow: Das musst du dir gut überlegen, ob du die verwenden willst. Ich persönlich finde (zumindest die WF4) zwar cool, hängt aber vom Anwendungsfall ab. Schau dir am besten ein paar Tutorials durch, damit du es selbst abschätzen kannst. Speziell für diesen Fall vorgesehen sind sie übrigens gar nicht, sie sind zur Steuerung von langläufigen Geschäftsprozessen da. Aber wenn, dann auf jeden Fall WF 4 verwenden und nicht WF3 (schon alleiene wegen der Performance)

Gruß
Roland

07.03.2012 - 20:36 Uhr

Hallo Tman,

das wird von WCF unterstützt, zum Beispiel so:
Events and Callbacks

ich selbst habe damit zwar noch nichts gemacht, sollte aber relativ einfach klappen. Zumindest wenn an beiden Seiten eine .Net Anwendung ist 😉

Gruß
Roland

24.02.2012 - 06:16 Uhr

Hi m74,

das kommt daher, weil man i. d. R. im Setter von der Eigenschaft zunächst prüft, ob sich der Wert auch wirklich verändert hat. Wird also auf ein Property wieder ein Wert gesetzt, den es schon hat, dann kommt kein PropertyChanged.

Gruß
Roland

22.02.2012 - 12:25 Uhr

Hallo Campy,

Direkt offene Verbindungen abzufragen geht - zumindest bei Http Bindings - nicht. Bei den anderen weiß ich es nicht genau, glaub aber eher, dass da WCF zustandslos arbeitet.

Du könntest so etwas über Alive-Aufrufe von den Clients realisieren. Heißt: Jeder Client sendet zyklisch eine Alive-Nachricht zum Server. Somit wissen beiden Seiten über den Zustand der Verbindungen bescheid. Kommt das Alive von einem Client nach einem bestimmten Timout nicht mehr, so weiß der Server, dass es diesen Client nicht mehr gibt.

Gruß
Roland

21.02.2012 - 22:30 Uhr

Hi,

ehrlich gesagt habe ich mich mit dem EventLog nie alzu tief beschäftigt. Besser ist es glaub ich, eigene Protokolle zu führen (Deteien, in Datenbank, ...). Diese kannn man dann auch wesentlich detaillierter machen und Berechtigunsprobleme bekommt man i. d. R. auch nicht. Zudem funktionieren diese Dinge in jeder OS-Version gleich.

Gruß
Roland

21.02.2012 - 20:49 Uhr

Hallo MrSparkle,

vor der Überlegung stand ich vor kurzem auch.
Habe bei einer Windows.Forms Anwendung, die relativ viel auf DataBindings setzt, das "klassische" Command-Pattern umgesetzt und musste feststellen, dass das je nach Situation schon relativ kompliziert werden kann, wenn man es falsch macht. Relativ viel habe ich mit "ChangeTracker"-Componenten gemacht. Dabei handelt es sich um Komponenten, die selbst auf PropertyChanged-Ereignisse horchen und für Änderungen automatisch Command-Objekte erzeugen. Für komplexere Befehle gab es bei dieser Lösung einfach eigene Command-Klassen.

Am Ende war es aber wie gesagt an manchen Stellen zwar richtig cool, an wenigen Stellen auch relativ kompliziert. Zum Beispiel der Fall, dass die Änderung eines Properties automatisch eine Neuberechnung an einer anderen Stelle triggert. Das so richtig zu kombinieren, dass bei einem Undo alles wieder zurückgesetzt wird, war vom Konzept her nicht leicht.

Was für dich eventuell noch interessant ist, ist dieses Projekt:
Monitored Undo Framework

Die verfolgen einen Ansatz, bei dem die Undo/Redo-Befehle dynamisch je nach getaner Änderung erzeugt werden. Auf der anderen Seite müsste es auch möglich sein, alle Änderung innerhalb einer bestimmten Methode zu "tracken" und dann als eigenen Undo/Redo-Befehl abzuspeichern. Geht denke ich in die Richtung, die du suchst, habe es mir aber noch nicht genauer angeschaut.

An sich ein leicht zu unterschätzendes Thema. Bin gespannt, welche Lösung zu nutzen wirst.

Gruß
Roland

19.02.2012 - 08:36 Uhr

Hi,

alles klar.
Auf welchem Betriebssystem testest du denn?
Meines wissens wurde seit Vista relativ viel an dem TCP/IP Stack rumgebastelt. Eventuell reagieren die älteren Betriebsysteme (XP / 2003) auch so wie das CE bei dir?

Gruß
Roland

18.02.2012 - 07:23 Uhr

Hallo Chilic,

eine Alternative wäre noch, vohrer / parallel einen ping los zu schicken. Damit findest du wesentlich schneller raus, ob der andere Rechner erreichbar ist, oder nicht.

Gruß
Roland

16.02.2012 - 06:31 Uhr

Hi,

klingt nach ner relativ seltenen Konstellation. Ich würde da eventuel mal per ILSpy oder Reflector nachschauen, welcher Code im Hintergrund daraus erzeugt wird. Vielleicht wirds dadurch klarer.

Sieht aber jetzt für mich auch eher nach einem Bug aus.

Gruß
Roland

11.02.2012 - 07:13 Uhr

Hi,

benutz mal..

File.WriteAllBytes(Pfad + "\\Vorlagen\\", Properties.Resources.Brief.ToString());

File.Copy erwartet im ersten Parameter einen Pfad.. du versuchst aber, eine Byte-Array zu übergeben.

Gruß
Roland

10.02.2012 - 06:16 Uhr

Hi,

ein prinzipielle Fehler ist mir jetzt nicht ins Auge gestochen, ich würde aber mal mit so einem Zeug hier aufpassen:

                    <security mode="Transport">
                        <transport clientCredentialType="Windows" proxyCredentialType="None"
                            realm="" />
                        <message clientCredentialType="Windows" negotiateServiceCredential="true"
                            algorithmSuite="Default" />
                    </security>

Hast schon mal mit einem BasicHttpBinding ohne irgendwelchen Security-Einstellungen versucht? Due bekommst doch beim Aufruf deines Dienstes von einem anderen Rechner aus mit Sicherheit eine Exception, wie lautet diese denn?

Gruß
Roland

31.01.2012 - 21:03 Uhr

Hi,

ich versteh nicht ganz..
Willst du das WSDL anzeigen oder wirklich nur eine formatierte Liste mit Methoden und Parametern?

Ersteres erreichst du über den ServiceHost mit einem Richtigen Binding (ich glaub irgendwas von wegen MetadataBinding oder so). Letzteres z. B. per Reflection auf deinen Service Contract (das Dienst Interface).

Hoffe, das hilft.

Gruß
Roland

31.01.2012 - 20:51 Uhr

Hallo Kollegen,

was ich an der Stelle noch zu bedenken geben möchte, ist, dass man auch einen Weg schaffen sollte, wie die Informationen über einen Fehler vom Kunden / Benutzer zum Entwickler gelangen können. An der Stelle kann es unterschiedlichste Wege geben.

Ich persönlich setze an der Stelle gerne auf Protokollierung zu (fast) allen Exception / wichtigen Ereignissen und auf aut. generiert Fehlerberichte, falls eine unbehandelte Ausnahme auftritt. Für beides gibt es allerdings keinen wirklichen Standard im .Net. Zumindest keinen, der mir bekannt wäre.

Gruß
Roland

30.01.2012 - 22:51 Uhr

Hi,

direkt über AnkhSVN wirds wohl nicht gehen. Ich würde eher versuchen, eventuell durch ein WebService Aufruf auf den SVN-Server oder ein Kommandozeilentool, die aktuelle Revisionsnummer rauszufinden und über ein Script ins eigene Coding einzubauen. Eventuell sogar im Postbuild-Ereignis.

Falls du eine Lösung in die Richtung findest, könntest du diese hier bitte Posten. Wär eigentlich keine schlechte Idee, sowas auch bei unseren SVN-Projekten mit einzubauen.

edit: Oder schau dir mal den svn Kommandozeilen-Client an. In Kapitel 9. Die komplette Subversion Referenz: svnlook gibt es zum Beispiel ein Befehl, mit dem du vielleicht an die Revisionsnummer kommst (jetzt nicht getestet).

Gruß
Roland

30.01.2012 - 21:37 Uhr

Hallo ViperNeo,

in Packet-Dateien mit .Net Standardmitteln habe ich einen Weg beschrieben, wie man Zip-Dateien mit den Framework-Bordmitteln machen kann (System.IO.Packaging). Aber Achtung: Nicht alle Zip-Dateien können dadurch gelesen werden, da dieser Weg die "Open Packaging Conventions" von Microsoft voraussetzt, die dem OpenXML-Zeugs entstammen.

Ansonsten würd ich auch die SharpZipLib empfelen, habe ich auch schon öfters verwendet und klappt problemlos.

Gruß
Roland

29.01.2012 - 16:29 Uhr

Hi Kameleon,

bei SetCooperativeLevel musst du das Handle deines Hauptfensters übergeben. In Windows.Forms ist das einfach, da jedes Control die Eigenschaft Handle besitzt. Wenn du bei WPF das Handle des Hauptfensters haben möchtest, musst du einen kleinen Umweg gehen:

Handle eines Wpf-Fensters ermitteln.aspx

Gruß
Roland

27.01.2012 - 07:30 Uhr

Hi,

ich versteht jetzt grad dein Problem nicht ganz. Bekommst du schon einen Fehler beim Compilieren? Wird das falsche zurückgegeben? Wie lautet die Fehlermeldung?

Was mir spontan ins Auge fällt, ist das hier:

Step CPPWrapper::getData()
{
 Step s = this->NAT->getData();
 return s;
};

Step ist ein Natives Objekt, oder? Wenn du es hier einfach so zurück gibts, wird C# nicht viel damit anfangen können.

Gruß
Roland

26.01.2012 - 17:38 Uhr

Hallo Kollegen,

ich finde die Idee mit dem Deployment-Projekten nicht einmal so schlecht. Ich denke, so kann man auch gut trennen.

Wir machen es meist so, dass die Software, die ausgeliefert wird, immer die Gleiche ist. Unterschieden wird nur durch die Lizenz. Ob das jetzt ein Dongle, ein File, ein Key oder was ganz anderes ist, ist ja egal. Die Lizenz sagt am Ende, welche Features funktionieren und welche nicht.

Gruß
Roland

26.01.2012 - 13:06 Uhr

Hi,

wir haben das jetzt schon seit ca. 4 Jahren im Einsatz und sind relativ zufrieden damit.

Schau dir doch mal die Demos an, die mit dem Setup mit installiert werden. Da sind alle Features mit relativ guten Beispielen beschrieben.

Einarbeitungszeit ist m. E. nicht einmal so hoch. Man muss halt mal mit den meisten Flags usw. rumgespielt haben, damit man sieht, was sie bewirken und was man denn genau haben möchte. Vorteile gegenüber dem Standard von WinForms gibts eine ganze Menge, aber dazu guckst du dir am besten die Demos an.

Gruß
Roland

26.01.2012 - 12:59 Uhr

Hi,

wenn du damit keine Performance-Probleme hast, warum nicht?
Du könntest dir die Werte, die du bereits gelesen hast, eventuell auch zwischenspeichern, damit du nicht jedes mal wieder das Gleiche lesen musst.

Ich persönlich nutze für solche Sachen meist einfach eine Klasse, die für jeden Parameter eine Eigenschaft besitzt (je nach bedarf noch Unterobjekte / Klassen) und speichere bzw. lade die Daten mit dem XmlSerializer.

Eine ganz andere Alternative gibt es dann noch direkt im Framework, damit zu z. B. direkt die Werte aus der App.Config nutzen kannst. Wie genau ist auch hier im Forum im FAQ irgendwo beschrieben, finde nur grad den Beitrag nicht.

Gruß
Roland

26.01.2012 - 11:55 Uhr

Hi JuyJuka,

ob WF4 das ist, was du suchst, kann ich auf den ersten Blick nicht sagen. Ist aber auf jeden Fall mehr als einen Blick für dich Wert. Schau dir StateMachine-Workflows in WF 4 dazu mal an. Dort kannst du Stati, Eintritts- und Austrittsaktionen und Bedingungen für Statuswechsel definieren. Aber Achtung: Damit die gehen, musst du das .Net 4 Platform Update 1 installiert haben (für .Net und VisualStudio).

Ich habe vor kurzem erst einen Vortrag darüber in der Usergroup Regensburg gehalten, allerdings nocht nicht über StateMachines. Die habe ich selber bis jetzt nur mal grob durchgetestet. Es gibt die Samples und Folien als Zip-Datei.

Von den anderen genannten Frameworks habe ich leider nicht viel Ahnung.

Gruß
Roland

26.01.2012 - 08:10 Uhr

Hi Lydia,

das sind Debug-Fehlermeldungen. Wir hatten den Effekt damals auch, dass bei manchen Pdfs solche Fehlermeldungen während des Debuggens kamen, irgendwelche Mängel an den veränderten Pdfs konnten wir aber nicht entdecken. Wenn die Anwendung nicht im Debug-Modus läuft, kommen die Meldungen auch nicht.

Ich persönlich hätte das jetzt schon fast vergessen. Diese Meldungen machen ein ungutes Gefühl, mein Vorteil war aber, dass die Pdfs immer aus der Gleichen Quelle kommen und die haben wir relativ intensiv getestet.

Mit iTextSharp auf der anderen Seite habe ich auch schon mal rumgespielt, hatte aber einen nicht wirklich besseren Eindruck davon. Diese API hat mir eher für den Fall besser gefallen, von Grund auf eigene Pdfs zu erzeugen. Dazu auch ein paar Infos auf meiner Homepage.

Wenn man eine Universal-Lösung haben möchte, könnte man höchstens auf kostenpflichtige Bibliotheken zurückgreifen. Ich glaub, so teuer sind die nicht einmal.

Gruß
Roland

25.01.2012 - 14:58 Uhr

Das geht so nicht über dynamische Objekte, da ja Visual Studio nicht weiß, wie deine xml-datei aussieht und damit schlicht nichts anfangen kann. Der Intellisense zeigt dir nur das an, was in der Klasse definiert ist oder eben gar nichts, wenn du mit dynamic arbeitest.

Gruß
Roland

25.01.2012 - 12:39 Uhr

Hi Lydia,

die haben da schon eine ganze Menge Beispiele:
Hier zum Beispiel

Gruß
Roland