Laden...

Forenbeiträge von mabo Ingesamt 334 Beiträge

09.06.2009 - 11:47 Uhr

ein paar Hinweise zum "kontrollierten Absturz":

Application.ThreadException-Ereignis
Application.SetUnhandledExceptionMode-Methode
StackFrame-Klasse

und bei WPF:
Application.DispatcherUnhandledException-Ereignis

09.06.2009 - 11:29 Uhr

MyObj muss auch INotifyPropertyChanged implementieren.

Du änderst ja auch ein Objekt in der Liste und nicht die Liste selbst.

09.06.2009 - 09:14 Uhr

Guten Morgen,

danke für deine Antwort.

Mir ist bewusst, das ADS recht wenig verbreitet sind und gewisse Gefahren bergen. Ich hatte auch nicht vor, das Programm zu veröffentlichen, sondern nur privat zu verwenden.

Nach meinen gestrigen Recherchen bin ich aber zu dem Entschluss gekommen, statt dem Indexdienst und ADS einfach eine normale Datenbank zu benutzen. Das ist auch wesentlich einfacher zu programmieren. 😁

Hier noch ein paar Links falls jemand es braucht:
MSDN-Forum: Indexing User-Defined Properties from an NTFS stream
Technet: NTFS Streams
[Artikel] NTFS Datenströme
http://channel9.msdn.com/wiki/desktopsearchifilters/
http://channel9.msdn.com/wiki/desktopsearchquestions/
http://www.codeproject.com/KB/aspnet/IndexingServer.aspx
http://www.codeproject.com/KB/database/Indexing_Service_HOW-TO.aspx

Gruß mabo

08.06.2009 - 15:37 Uhr

Hallo,

hat hier jemand Erfahrungen mit den Indexdienst von Windows?

Konkret möchte ich die alternativen Datenströme von NTFS nutzen, um zu Dateien Informationen zu hinterlegen und diese dann für eine schnelle Suche indizieren.

Ist sowas möglich?

Gruß mabo

04.06.2009 - 16:09 Uhr

ich meinte ja eher auch die Antwort auf die Frage:

context menus are not part of the visual tree.

Über die Eigenschaft PlacementTarget vom Contextmenü kommt man aber dran und du kannst das Command dann hinbiegen wo du willst.

04.06.2009 - 14:10 Uhr

Ich hatte ein ähnliches Problem mit dem Contextmenu.
Vielleicht hilft dir der Link hier:
http://stackoverflow.com/questions/662164/wpf-context-menu-doesnt-bind-to-right-databound-item

03.06.2009 - 16:32 Uhr

Wenn das kein Schreibfehler ist würde ich sagen du hast 2 verschiedene Streams.


ms.Position = 0;
byte[] newBA = saveBackMS.ToArray();

03.06.2009 - 14:01 Uhr

Problem gelöst mithilfe eines CodeProject-Artikels: http://www.codeproject.com/KB/WPF/WaitingCtl.aspx

03.06.2009 - 12:00 Uhr

Hallo zusammen,

ich versuche gerade das Wartesymbol aus Vista (der drehende Ring) nachzubauen.
Mein Problem ist jetzt eine InvalidOperationException wenn Start() ausgeführt wird:


Der Name "ellipse_loch" kann im Namensbereich von "System.Windows.Shapes.Ellipse" nicht gefunden werden.

Die Exception bezieht sich auf Storyboard.TargetName in der DoubleAnimation.
Wie kann ich jetzt das Storyboard per Code starten und stoppen?


<UserControl x:Class="WpfApp.Controls.CircularProgressBar"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Height="64" Width="64" >
    
    <UserControl.Resources>        
        
        <SolidColorBrush x:Key="Randfarbe">
            <SolidColorBrush.Color>
                <Color A="50" B="150" G="80" R="80" />
            </SolidColorBrush.Color>
        </SolidColorBrush>
        
        <LinearGradientBrush x:Key="Farbverlauf">
            <GradientStop Offset="0">
                <GradientStop.Color>
                    <Color A="25" B="8" G="8" R="8" />
                </GradientStop.Color>
            </GradientStop>
            <GradientStop Offset="1">
                <GradientStop.Color>
                    <Color A="75" B="255" G="255" R="255" />
                </GradientStop.Color>
            </GradientStop>
        </LinearGradientBrush>
        
        <VisualBrush x:Key="Loch">
            <VisualBrush.Visual>
                <Ellipse Name="ellipse_loch" Height="5" Stroke="Black" Width="5" />
            </VisualBrush.Visual>
        </VisualBrush>      
        
        <Style x:Key="SpinStyle" TargetType="{x:Type Ellipse}">
            <Setter Property="Stroke" Value="{StaticResource Randfarbe}" />
            <Setter Property="Fill" Value="{StaticResource Farbverlauf}" />
            <Setter Property="OpacityMask" Value="{StaticResource Loch}" />
            <Setter Property="RenderTransformOrigin" Value="0.5,0.5" />
            <Setter Property="RenderTransform">
                <Setter.Value>
                    <RotateTransform x:Name="Transformer" Angle="0" />
                </Setter.Value>
            </Setter>
        </Style>

        <Storyboard x:Key="YouSpinMeRightRound">
            <DoubleAnimation
                Storyboard.TargetName="ellipse_loch"
                Storyboard.TargetProperty="(RotateTransform.Angle)"
                From="0" 
                To="360" 
                Duration="0:0:0.5" 
                RepeatBehavior="Forever" />
        </Storyboard>
    </UserControl.Resources>
    
    <Grid>
        <Ellipse Name="ellipse_ring"
                 Style="{StaticResource SpinStyle}"
                 >
        </Ellipse>        
    </Grid>
</UserControl>

Codebehind:


    /// <summary>
    /// Interaktionslogik für CircularProgressBar.xaml
    /// </summary>
    public partial class CircularProgressBar : UserControl
    {
        public CircularProgressBar()
        {
            InitializeComponent();
        }

        public void Start()
        {
            Storyboard sb = (Storyboard) this.FindResource("YouSpinMeRightRound");
            ellipse_ring.BeginStoryboard(sb);
        }

        public void Stop()
        {
            
        }
    }

02.06.2009 - 17:49 Uhr
  1. alle Leerzeichen durch ein Leerzeichen ersetzen (mit Regex z.b.)
  2. String.Split()
02.06.2009 - 11:32 Uhr

Der Connectionstring sieht schon sehr komisch aus. Das hab ich noch nie gesehen. Wo hast du den her?

Probier mal den hier:


Server=localhost\SQLEXPRESS;initial catalog=test;User ID=testuser;Password=huhuhuhu

Weiter Infos dazu unter www.connectionstrings.com

28.05.2009 - 13:43 Uhr

Vorschlag:
Erstelle für jeden konkreten Task eine Klasse, die die Darstellung übernimmt. Das ganze speicherst du in einem Dictionary<ITask, IPresenter>. So kannst du für jeden Task unabhängig von der Businesslogik die Darstellung implementieren.

Gruß mabo

27.05.2009 - 16:40 Uhr

falls du WPF verwendest, da gibt es das Expander-Control.
Für WinForms kenn ich nur Controls von Drittanbietern.

26.05.2009 - 17:48 Uhr

oh man natürlich, die einfachsten Lösungen sind die besten. 😁

Vielen Dank. 👍

26.05.2009 - 17:32 Uhr

Hallo zusammen,

ich habe mal wieder ein verzwicktes Problem.

Folgende Situatuation:
In meiner Anwendung werden Werte aus einer XML-Datei dargestellt. Diese Werte hab ich in ein eigenes Datenobjekt übertragen und es dient als Datenbindungsquelle für Textboxen, die die Werte dann anzeigen. Die Werte sind auch editierbar und der Benutzer kann die Änderungen in die XML-Datei zurückspeichern. Der Bearbeitungsmodus wird über TextBox.IsReadOnly gesteuert.

Das Problem:
Zu den Werten sollen jetzt auch Einheiten (z.B. m/s oder kg oder mm) angezeigt werden. Die Einheit soll aber nicht in der Textbox stehen, wenn der Benutzer den Wert grade bearbeitet.

Meine erste Idee war ein ValueConverter, aber da war zum einen ConvertBack() eine ziemliche Frickelei, zum andern war die Einheit auch noch zu sehen wenn man im Bearbeitungsmodus ist.

Jetzt bräuchte ich eine Idee wie man das am einfachsten lösen kann. 🙂
Pseudocode stelle ich mir sowas vor:


if (TextBox.IsReadOnly)
  Zeige Wert + Einheit
else
  Zeige Wert

Gruß mabo

26.05.2009 - 13:08 Uhr

hehe ja ist teilweise echt lustig 🙂

Songtexte scheit das Ding auch zu kennen

18.05.2009 - 17:13 Uhr

hatte mich verschrieben, statt IResult stand TResult in der Methodensignatur, das war natürlich Blödsinn 🙂

15.05.2009 - 15:47 Uhr

das müsste so auch gehen, dann sparst du dir einen Cast.


    private T Run<T>(Func<IResult> function)
    {
        _inner.Info = OwnInfo;
        IResult result = function();
        if (result.ErrorCode != 0)
            throw ScheissenDreckException("");
        return result.Data as T;
    }

12.05.2009 - 15:18 Uhr

naja in diesem Fall wird es nur eine Sprache geben. Mich stört nur dass im Menü bei einem Eintrag Strg steht und beim anderen Ctrl. Das sieht halt nicht einheitlich aus.

12.05.2009 - 14:46 Uhr

ja das kommt irgendwie vom System.

Wenn ich KeyGesture.GetDisplayStringForCulture() aufrufe kommt auch Ctrl zurück anstatt Strg. 🙁 Sehr schade, da muss ich die ApplicationCommands wohl ganz raus scheissen.

12.05.2009 - 13:26 Uhr

Hallo, danke für deine Antwort.

kann es sein das du an einem deutschen system entwickelst ?

ja, klar.... sowohl Betriebssystem als auch IDE.

warum lokalisierst du nicht erstmal deine eigenen strings richtig?

Die meisten Strings sind schon lokalisiert, hier war ich noch zu faul 😉 Aber macht das hier einen Unterschied?

schon die CurrentCulture und CurrentUICulture der application umgestellt?

Eine Umstellung von CurrentCulture und CurrentUICulture auf Spanisch brachte keine Änderungen.

Gruß mabo

12.05.2009 - 11:08 Uhr

Hallo,

ich habe schon wieder eine Frage 🙂

In meinem Programm verwende ich neben den ApplicationCommands auch eigene RoutedUICommands. Das Problem ist nun, dass der Text der KeyGestures bei den eigenen Commands nicht richtig lokalisiert wird: Statt Strg steht da Ctrl.

Wie kann man das ändern?

Gruß mabo


namespace WPFApplication
{
    public static class CustomCommands
    {
        private static RoutedUICommand _openCompare;
        private static RoutedUICommand _saveChanges;

        static CustomCommands()
        {
            _openCompare = new RoutedUICommand();
            _openCompare.InputGestures.Add(new KeyGesture(Key.O, ModifierKeys.Control | ModifierKeys.Shift));
            _openCompare.Text = "2 Dateien zum Vergleich öffnen";

            _saveChanges = new RoutedUICommand();
            _saveChanges.InputGestures.Add(new KeyGesture(Key.S, ModifierKeys.Control));
            _saveChanges.Text = "Änderungen speichern";
        }

        public static RoutedUICommand OpenCompare { get { return _openCompare; } }

        public static RoutedUICommand SaveChanges { get { return _saveChanges; } }
    }
}


        <Menu Name="mnuMain" DockPanel.Dock="Top">
            <MenuItem Header="_Datei" >
                <MenuItem Command="ApplicationCommands.Open" />
                <MenuItem Command="{x:Static my:CustomCommands.OpenCompare}" />
                <Separator />
                <MenuItem Command="{x:Static my:CustomCommands.SaveChanges}" />
                <Separator />
                <MenuItem Command="ApplicationCommands.Stop" />
            </MenuItem>
            <MenuItem Header="Filter">...</MenuItem>
        </Menu>

08.05.2009 - 14:08 Uhr

kann ich grade brauche, super sache 👍

08.05.2009 - 11:13 Uhr

Edit:Lösung gefunden, siehe unten

Ich habe das Problem weiter einschränken können: Anscheinend ist in der abgeleiteten Klasse irgendwas drin was Probleme macht, aber ich habe keine Ahnung warum.

Das Problem kann man folgendermaßen nachvollziehen:

  1. Leere WPF-Anwendung erstellen
  2. Die KlasseTreeListViewItem hinzufügen
  3. Header-Eigenschaft zuweisen.
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Controls;
using System.Windows;

namespace WpfApplication1
{
    public class TreeListViewItem : TreeViewItem
    {
        /// <summary>
        /// Item's hierarchy in the tree
        /// </summary>
        public int Level
        {
            get
            {
                if (_level == -1)
                {
                    TreeListViewItem parent =
                        ItemsControl.ItemsControlFromItemContainer(this) as TreeListViewItem;
                    _level = (parent != null) ? parent.Level + 1 : 0;
                }
                return _level;
            }
        }


        protected override DependencyObject
                           GetContainerForItemOverride()
        {
            return new TreeListViewItem();
        }

        protected override bool IsItemItsOwnContainerOverride(object item)
        {
            return item is TreeListViewItem;
        }

        private int _level = -1;
    }
}



    /// <summary>
    /// Interaktionslogik für Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            TreeListViewItem item = new TreeListViewItem();
            item.Header = "Test";
        }
    }

Edit: Es passiert auch wenn man ein normales TreeViewItem nimmt.


    /// <summary>
    /// Interaktionslogik für Window1.xaml
    /// </summary>
    public partial class Window1 : Window
    {
        public Window1()
        {
            InitializeComponent();
            TreeViewItem test1 = new TreeViewItem();
            test1.Header = "asdf";
        }
    }

Edit2:
Die Fehlermeldung trat auf weil das TreeViewItem keinem TreeView zugeordnet war. Nachdem ich das TreeViewItem einem TreeView zugeordnet hatte trat der Fehler nicht mehr auf und es funktionierte alles wie gewohnt. 🙂

08.05.2009 - 10:15 Uhr

so ein Binding gibt es nicht in meinem Code.
Ich habe auch schon testweise alles was irgendwie FindAncestors enthält auskommentiert aber der Fehler tritt immer noch auf.

08.05.2009 - 09:47 Uhr

Hallo,

ich wollte jetzt meinen TreeView von hier in ein UserControl einbetten und erhalte nach der Zuweisung von TreeListViewItem.Header folgende Fehlermeldung:

System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=HorizontalContentAlignment; DataItem=null; target element is 'TreeListViewItem' (Name=''); target property is 'HorizontalContentAlignment' (type 'HorizontalAlignment')
System.Windows.Data Error: 4 : Cannot find source for binding with reference 'RelativeSource FindAncestor, AncestorType='System.Windows.Controls.ItemsControl', AncestorLevel='1''. BindingExpression:Path=VerticalContentAlignment; DataItem=null; target element is 'TreeListViewItem' (Name=''); target property is 'VerticalContentAlignment' (type 'VerticalAlignment')

TreeListViewItem ist eine von TreeViewItem abgeleitete Klasse und besitzt die 2 angesprochenen Eigenschaften.

Wenn ich den TreeView in einem Window direkt verwende tritt die Fehlermeldung nicht auf.
Und wenn ich die ganzen Styles und Templates entferne tritt der Fehler immer noch auf.

Was ist da los?

Gruß mabo

07.05.2009 - 11:32 Uhr

ja klar, im prinzip hab ich das ja auch gesagt 😉

07.05.2009 - 11:27 Uhr

das musst du dann schon dazu sagen 🙂

07.05.2009 - 10:56 Uhr

wie wärs mit DataTable.Merge() ?

07.05.2009 - 10:47 Uhr

Schließe mich meinem Vorredner an, sieht man ja auch schön am Code. Ich empfehle PNG. Unterstützt Transparenz und komprimiert verlustfrei.

Das wird auch nicht reichen wenn der Benutzer jede beliebige Bilddatei speichern kann. Wenn der Dateiinhalt als byte[] gespeichert wird muss man den Dateityp zusätzlich mit abspeichern, so dass man beim zurückwandeln in ein Bildformat das richtige benutzen kann. Oder die Bilder werden vor dem Speichern in ein Format übertragen.

06.05.2009 - 17:40 Uhr

du musst der CollectionViewSource einen Namen geben.

06.05.2009 - 17:32 Uhr

Nein das geht so nicht.
Stichworte: Styles, Templates, evtl. Trigger und ganz wichtig: Grundlagenforschung 😉

06.05.2009 - 16:54 Uhr

:rtfm: Klasse Convert
Edit: Und Klasse Type

06.05.2009 - 16:06 Uhr

Dass noch keiner Blade Runner genannt hat? 😃

Folgende aus der Kategorie "Tiefer schwarzer Humor" kann ich auch noch empfehlen:
In China essen sie Hunde http://de.wikipedia.org/wiki/In_China_essen_sie_Hunde
und der Nachfolger Old men in new cars http://de.wikipedia.org/wiki/Old_Men_in_New_Cars_–_In_China_essen_sie_Hunde_2

06.05.2009 - 15:41 Uhr

Das brauchst du eigentlich gar nicht. Für die Prüfung auf InvokeRequired und den Invoke-Aufruf selbst kannst du jedes beliebige Control benutzen (sofern es im GUI-Thread erzeugt wurde, aber davon gehe ich aus 😁 )

06.05.2009 - 10:45 Uhr

Gutes Stichwort, aber ich weiß grad nicht wo ich den einhängen soll.

Aber mir ist glaub ich grad eine andere Lösung eingefallen, die ich eben ausprobiere.

Edit: Ok, das Einfärben der einzelnen Zellen funktioniert zwar im Prinzip, aber dann bleibt ein Abstand zwischen den einzelnen Zellen, das sieht nicht so toll aus.

Edit2: Ich färbe jetzt die Schriftfarbe rot, das passt auch 😁 Wenn jemand aber trotzdem eine Lösung findet wäre ich daran interessiert.

06.05.2009 - 09:19 Uhr

Hallo zusammen,

ich habe eine Frage zum Thema DataBinding/Trigger.

Ich habe einen Treeview, der auch Detailspalten unterstützt (erweiterte Version von http://blogs.msdn.com/atc_avalon_team/archive/2006/03/01/541206.aspx, gefunden in den WPF-Samples vom Windows SDK). Der TreeView wird benutzt, um 2 XML-Dateien nebeneinander darzustellen, die von der Struktur gleich sind, aber unterschiedliche Werte beinhalten.

Mein Problem ist jetzt folgendes: Ich möchte die Hintergrundfarbe der Zeilen, die unterschiedliche Werte beinhalten, einfärben. Eigentlich ganz einfach:


<DataTrigger Binding="{Binding Path=HasDifferentValues}" Value="true" >
    <Setter Property="Background"  Value="Red"/>
</DataTrigger>

Leider sind aber die Datenobjekte mit der Eigenschaft HasDifferentValues im Header der TreeListViewItems versteckt und ich habe keine Ahnung wie das Binding für einen Trigger dann aussehen muss.


    <Style TargetType="{x:Type l:TreeListViewItem}">
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type l:TreeListViewItem}">
                    <StackPanel>
                        <Border Name="Bd"
                      Background="{TemplateBinding Background}"
                      BorderBrush="{TemplateBinding BorderBrush}"
                      BorderThickness="{TemplateBinding BorderThickness}"
                      Padding="{TemplateBinding Padding}">
                            <GridViewRowPresenter x:Name="PART_Header" 
                                      Content="{TemplateBinding Header}" 
                                      Columns="{StaticResource gvcc}" />
                        </Border>
                        <ItemsPresenter x:Name="ItemsHost" />
                    </StackPanel>
                    <ControlTemplate.Triggers>
                        <Trigger Property="IsExpanded" Value="false">
                            <Setter TargetName="ItemsHost" Property="Visibility" Value="Collapsed"/>
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="HasHeader" Value="false"/>
                                <Condition Property="Width" Value="Auto"/>
                            </MultiTrigger.Conditions>
                            <Setter TargetName="PART_Header" Property="MinWidth" Value="75"/>
                        </MultiTrigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="HasHeader" Value="false"/>
                                <Condition Property="Height" Value="Auto"/>
                            </MultiTrigger.Conditions>
                            <Setter TargetName="PART_Header" Property="MinHeight" Value="19"/>
                        </MultiTrigger>
                        <Trigger Property="IsSelected" Value="true">
                            <Setter TargetName="Bd" Property="Background" 
                                    Value="{DynamicResource  {x:Static SystemColors.HighlightBrushKey}}"/>
                            <Setter Property="Foreground" 
                                    Value="{DynamicResource  {x:Static SystemColors.HighlightTextBrushKey}}"/>
                        </Trigger>
                        <MultiTrigger>
                            <MultiTrigger.Conditions>
                                <Condition Property="IsSelected" Value="true"/>
                                <Condition Property="IsSelectionActive" Value="false"/>
                            </MultiTrigger.Conditions>
                            <Setter TargetName="Bd" Property="Background" 
                                    Value="{DynamicResource  {x:Static SystemColors.ControlBrushKey}}"/>
                            <Setter Property="Foreground" 
                                    Value="{DynamicResource  {x:Static SystemColors.ControlTextBrushKey}}"/>
                        </MultiTrigger>
                        <Trigger Property="IsEnabled" Value="false">
                            <Setter Property="Foreground" 
                                    Value="{DynamicResource  {x:Static SystemColors.GrayTextBrushKey}}"/>
                        </Trigger>
                        <!-- Wie geht das? -->
                        <DataTrigger Binding="???????????" Value="true" >
                            <Setter Property="Background"  Value="Red"/>
                          </DataTrigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Die Datenklasse, die im Header des TreeListViewItems drin ist, sieht folgendermaßen aus (vereinfacht)


public class XmlNodeItem : INotifyPropertyChanged 
{
    public String Name {get...; set...;}
    public String Value {get...; set...;}
    public String ComparativeValue {get...; set...;}
    public bool HasDifferentValues {get...;}
    public ObservableCollection<XmlNodeItem> Children {get...; set...;}
}

Der Baum wird so befüllt:


        private void FillTree(XmlNodeItem rootXml)
        {
            TreeListViewItem rootTreeItem = new TreeListViewItem();
            rootTreeItem.Header = rootXml;
            FillTreeNodes(rootXml, rootTreeItem);
            tlv.Items.Add(rootTreeItem);
        }

Schon mal Danke im Vorraus 😃

Gruß mabo

29.04.2009 - 16:39 Uhr

probier mal, ob du mit Application.ThreadException die Ausnahme fangen und behandeln kannst.

29.04.2009 - 16:17 Uhr

Wow, vielen Dank, das funktioniert super. 👍

29.04.2009 - 13:55 Uhr

Danke für die Antwort, dann lasse ich das Fenster vorerst normal.

Soviel verstehe ich von WPF noch nicht dass ich ein solches Control selber schreibe. 😦

29.04.2009 - 13:14 Uhr

Hallo,

ich versuche gerade ein Window zu einzustellen, dass die ControlBox und das Icon nicht angezeigt werden, aber trotzdem eine Titelleiste vorhanden ist.

Weiß jemand wie das geht?

Gruß mabo

09.04.2009 - 14:32 Uhr

Aso, alles klar, dann hab ich es falsch verstanden 😃

09.04.2009 - 13:42 Uhr

Hm, ich weiß jetzt nicht ob ich das falsch verstehe, aber mit dem Designer kann man jede Property eines jeden Controls binden.

siehe Screenshot

09.04.2009 - 09:21 Uhr

Diese Ringabhängigkeiten sind aus gutem Grund nicht möglich. Sowas ist ganz schlechtes Design. Eine mögliche Lösung wäre, alle gemeinsamen Funktionen in eine dritte DLL auszulagern, worauf 1 und 2 dann referenzieren können.

Wie habt ihr das überhaupt entwickeln können? VS lässt Ringabhängigkeiten ja nicht zu.

01.04.2009 - 14:16 Uhr

NHibernate, da wir auch Java-Projekte haben und dort ebenfalls Hibernate verwenden.

Ausser für kleine Sachen und Quick&Dirty-Progrämmchen, da nehm ich dann ADO.NET.

17.03.2009 - 17:19 Uhr

Hallo,

hier würde sich ein Buildserver in Kombination mit Ant (oder nur Ant) anbieten.