Laden...

Forenbeiträge von Steven85 Ingesamt 99 Beiträge

27.03.2024 - 11:53 Uhr

Mit der dll klappt es, kopiere ich jedoch auch die beiden Dateien .deps.json und .runtimeconfig.json kommt folgender Fehler auf dem Mac.

A fatal error was encountered. The library 'libhostpolicy.dylib' required to execute the application was not found in '/Users/nicolewohlfahrt/Documents/VS_Projekte/publish/'.
Failed to run as a self-contained app.
  - The application was run as a self-contained app because '/Users/nicolewohlfahrt/Documents/VS_Projekte/publish/Wohltat.Office.FileManager.runtimeconfig.json' did not specify a framework.
  - If this should be a framework-dependent app, specify the appropriate framework in '/Users/nicolewohlfahrt/Documents/VS_Projekte/publish/Wohltat.Office.FileManager.runtimeconfig.json'.

Nachtrag: Ich habe auf einem Test Mac VS for Mac installiert und nutze hiervon die beiden genannten .json Dateien. Zusammen mit der dll vom Win Rechner läuft das Programm. Jedoch muss es auch möglich sein alles vom Win Rechner zu nutzen, da ich den Test Mac nicht mehr lange habe. Das ist also aktuell nur ein Workaround.

27.03.2024 - 08:54 Uhr

Ich verbringe bereits zu viel Zeit damit Dokumentationen zu lesen, stehe hier etwas unter Zeitdruck.
Kannst du mich nicht gerade bis zum Ziel führen und im Anschluss nehme ich miir die Zeit dafür?
Das ist der letzte Schritt um einfach nur die Konsolenanwendung auf dem Mac auszuftühren.

Ich verstehe nicht ganz was du mit "Du darfst keine Publish-Befehle mit Ausgabe-Ordner auf die Solution (*.sln) ausführen, sondern immer nur auf das Projekt (*.csproj)" meinst. Dazu finde ich auch nicht den richtigen Hinweis in dem Link wie ich es auf die csproj umstelle.

Nachtrag:
Bin jetzt mit cd in das Verzeichnis der csproj und habe dann den untenstehen Befehl ohne Warnung ausgeführen können, jedoch wieder mit einem leeren publish Ordner. Jabe auch versucht ein neues leeres Projekt zu erstellen mit dem gleichen Ergebnis.

dotnet publish -c Release --sc -o ./publish

Nachtrag 2:
Wenn ich in den Projekteigenschaft das Zielbetriebssystem auf "(Keine)" umstelle dann klappt es und ich bekomme Dateien in meinen Ausgabepfad.
Hier sind dann auch die beiden wichtigen Dateien dabei.

.deps.json
.runtimeconfig.json

Wie hattest du es getestet und läuft es dann auch auf dem Mac?

26.03.2024 - 21:59 Uhr

So langsam verzweifle ich, habe jetzt auf NET. 8 folgenden Befehl ausgeführt ohne Fehler:

dotnet publish -c Release --sc
MSBuild-Version 17.9.6+a4ecab324 für .NET
 Wiederherzustellende Projekte werden ermittelt...
 Alle Projekte sind für die Wiederherstellung auf dem neuesten Stand.
 Wohltat.Office.FileManager -> D:\Wohltat.Office\Wohltat.Office.FileManager\Wohltat.Office.FileManager\bin\Release\net8.0-macos12.0\osx-x64\Wohltat.Office.FileManager.dll
 Created the package:

Habe das -o  ./Folder weggelassen auf Grund einer Warnung.

Die Option "--output" wird beim Erstellen einer Lösung nicht unterstützt. Die Angabe eines Ausgabepfads auf Projektmappenebene führt dazu,
dass alle Projekte Ausgaben in dasselbe Verzeichnis kopieren, was zu inkonsistenten Builds führen kann.

Es wurde wieder ein leeres Verzeichnis erstellt

bin\Release\net8.0-macos12.0\osx-x64\publish
26.03.2024 - 17:26 Uhr

Die Seiten habe ich auch schon alle gefunden, aber leider bin ich nicht viel schlauer daraus geworden.
Im Prinzip ist das auch nicht ganz meine Welt, würde es nur gerne zum laufen bringen.

Habe die Anwendung auf .NET 8 umgestellt und es nochmal mit <RuntimeIdentifier>osx-x64</RuntimeIdentifier> versucht, aber auch hier ohne Erfolg.
Was mich wundert ist das er sagt "Der angegebene RuntimeIdentifier "win-osx-x64" wird nicht erkannt.", dabei steht in der csproj ja osx-x64.

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net8.0-macos12.0</TargetFramework>
	<RuntimeIdentifiers>osx-x64</RuntimeIdentifiers>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
26.03.2024 - 17:01 Uhr

Habe ich auch so probiert:

<PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0-macos12.3</TargetFramework>
	<RuntimeIdentifiers>osx-64</RuntimeIdentifiers>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <SupportedOSPlatformVersion>12.0</SupportedOSPlatformVersion>
  </PropertyGroup>

Bekomme dann schon beim kompilieren den Fehler "NETSDK1083 Der angegebene RuntimeIdentifier osx-64 wird nicht erkannt.".
Was könnte noch fehlen?

26.03.2024 - 16:30 Uhr

Habs mit mit der Console versucht und bekomme tatsächlich einen Fehler:

C:\Program Files\dotnet\sdk\8.0.202\Sdks\Microsoft.NET.Sdk\targets\Microsoft.NET.Sdk.FrameworkReferenceResolution.targets(90,5): error NETSDK1083: Der angegebene RuntimeIdentifier "win-osx-x64" wird nicht erkannt.

Hier noch meine csproj:

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net7.0-macos12.3</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
    <SupportedOSPlatformVersion>12.0</SupportedOSPlatformVersion>
  </PropertyGroup>

  <ItemGroup>
    <PackageReference Include="Microsoft.Extensions.Configuration.Binder" Version="8.0.1" />
    <PackageReference Include="Microsoft.Extensions.Configuration.Json" Version="8.0.0" />
  </ItemGroup>

  <ItemGroup>
    <None Update="appsettings.json">
      <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
    </None>
  </ItemGroup>

</Project>

Eigentlich habe ich alles auf .NET 7 ausgerichtet, verstehe nicht wirklich warum er hier von 8 spricht in dem Fehler.
Wie und wo setze ich den richtigen RuntimeIdentifier?

26.03.2024 - 00:06 Uhr

Danke für die Hilfe, so habe ich es probiert. Trotz Erfolgsmeldung habe ich einen leeren publish Ordner.
Woran könnte das liegen?

24.03.2024 - 13:03 Uhr

Hallo zusammen,

ich bin mir nicht sicher ob das der richtige Ort für mein Problem ist.
Ich verrsuche für einen Freund eine einfache Konsolenanwendung für seinen Mac zu entwickeln.
Hierzu nutze ich VS 2022 auf einem Windows Rechner. In den Projekteigenschaften habe ich alles soweit eingestellt, sh. Anhang.

Unter bin\Release\net7.0-macos12.3\osx-x64 finde ich alle erstellten Dateien. Jetzt fehlt mir nur noch das Wissen wie ich das ganze für den Mac bereitstelle.

Vielen Dank für eure Hilfe schonmal.

25.02.2023 - 11:18 Uhr

Hallo zusammen,

im Prinzip müsste ich nur wissen wie ich in der CodeBhind an das Image komme um die Size zu ermitteln.
Ziel ist es den Scale je nach Seitenverhätnis des Image anzupassen.


<Frame StyleClass="BalancedFrame">
         <Image x:Name="imgImage" 
                     Source="test.jpg" />
</Frame>

Mit imgImage.X/Y bekomme ich keine Werte.

Danke euch
Gruß Steven

02.01.2021 - 22:40 Uhr

Hi Abt,

habe mir die Doku zu async und await angesehen und auch bereits angewendet bzw. nachvollzogen.
Habe hierzu noch eine Frage. Du sagst ja ich soll immer die async Methoden verwenden, als z.b. so:


private static async void UseCase_QueryTypesAsync(DataContext dbContext)
        {
            // nur zur Demonstration ein kleines View, hier brauch man keine Migration
            var result = await dbContext.VW_Test.ToListAsync();
            Console.WriteLine(string.Join("\n", result));
        }

Aber was bringt es in diesem Fall? Hier wird doch sowieso nur der eine Aufruf gemacht? Oder ist dann die Methode ToListAsync an sich schon schneller?

Edit: Habe es gerade mal mit der Klasse Stopwatch gemessen (jeweils 5-6 mal). Ich brauche mit async und await im Schnitt 0,2 Sekunden länger.

02.01.2021 - 00:31 Uhr

Ich habe den Fehler gefunden. Das View ist jedes mal verschwunden wenn man im DB Browser die Verbindung schließt und wieder öffnet. Hier muss man noch den Button "Änderungen schreiben" nutzen, erst dann existiert das View tatsächlich. Vorher kann man aber schon via SQL in dem Tool damit Abfragen generieren. Sorry, ich arbeite erst jetzt mit diesem Tool und hab es nicht bemerkt. Danke für deine Hilfe.

01.01.2021 - 21:31 Uhr

Ne, es gibt nur eine DB. Ich habe den ConnectionString zur besseren Lesbarkeit immer gekürzt, der geht definitiv auf die richtige DB. Und es gibt nur einen Context. Ich gehe davon aus das Sqlite evtl. das nicht unterstützt. Habe bei Google auch nichts gefunden.

01.01.2021 - 16:05 Uhr

Mit Raw Sql kommt der selbe Fehler "no such table".

 
dbContext.VW_Test.FromSqlRaw(@"select * from VW_Test").ToList()

Das Thema Logging wurde in meinem Tutorial erst jetzt behandelt. Hier spuckt die Console nun folgendes aus:

Fehlermeldung:
info: Microsoft.EntityFrameworkCore.Infrastructure[10403]
Entity Framework Core 5.0.1 initialized 'DataContext' using provider 'Microsoft.EntityFrameworkCore.Sqlite' with options: None
fail: Microsoft.EntityFrameworkCore.Database.Command[20102]
Failed executing DbCommand (10ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT "v"."Nachname", "v"."Vorname"
FROM "VW_Test" AS "v"
fail: Microsoft.EntityFrameworkCore.Query[10100]
An exception occurred while iterating over the results of a query for context type 'Beispielanwendung_Einfach.DataContext'.
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such table: VW_Test'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader()
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable1.Enumerator.InitializeReader(DbContext _, Boolean result) at Microsoft.EntityFrameworkCore.Storage.NonRetryingExecutionStrategy.Execute[TState,TResult](TState state, Func3 operation, Func3 verifySucceeded) at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable1.Enumerator.MoveNext()
Microsoft.Data.Sqlite.SqliteException (0x80004005): SQLite Error 1: 'no such table: VW_Test'.
at Microsoft.Data.Sqlite.SqliteException.ThrowExceptionForRC(Int32 rc, sqlite3 db)
at Microsoft.Data.Sqlite.SqliteCommand.PrepareAndEnumerateStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteCommand.GetStatements(Stopwatch timer)+MoveNext()
at Microsoft.Data.Sqlite.SqliteDataReader.NextResult()
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteReader(CommandBehavior behavior)
at Microsoft.Data.Sqlite.SqliteCommand.ExecuteDbDataReader(CommandBehavior behavior)
at System.Data.Common.DbCommand.ExecuteReader()
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable1.Enumerator.InitializeReader(DbContext _, Boolean result) at Microsoft.EntityFrameworkCore.Storage.NonRetryingExecutionStrategy.Execute[TState,TResult](TState state, Func3 operation, Func3 verifySucceeded) at Microsoft.EntityFrameworkCore.Query.Internal.SingleQueryingEnumerable1.Enumerator.MoveNext()

01.01.2021 - 15:27 Uhr

Das hier ist mein gesamter Context:


public class DataContext : DbContext
    {
        // Für die zu erzeugende Tabelle nach dem Code first Prinzip
        public DbSet<Person> Personen { get; set; }
        public DbSet<Geschlecht> Geschlechter { get; set; }
        public DbSet<Herkunft> Herkunft { get; set; }
        public DbSet<Kontinent> Kontinent { get; set; }
        public DbSet<Hobby> Hobby { get; set; }
        public DbSet<PersonHobby> PersonHobby { get; set; }
        public DbSet<VW_Test> VW_Test { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite(@"Data Source=D:\Daten\EntityFrameworkTutorial.db");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            var personBuilder = Build<Person>(modelBuilder);
            var geschlechtBuilder = Build<Geschlecht>(modelBuilder);
            var herkunftBuilder = Build<Herkunft>(modelBuilder);
            var kontinentBuilder = Build<Kontinent>(modelBuilder);
            var hobbyBuilder = Build<Hobby>(modelBuilder);
            var personhobbyBuilder = Build<PersonHobby>(modelBuilder);

            // Property Bedingungen festlegen
            personBuilder
                .Property(x => x.Geburtsdatum)
                .IsRequired();
            personBuilder
                .Property(x => x.HerkunftId)
                .IsRequired();
            personBuilder
                .Property(x => x.IQ)
                .HasDefaultValue(0)
                .IsRequired();
            herkunftBuilder
                .Property(x => x.Deutschsprachig)
                .HasDefaultValue(false);

            // 1 zu n Beziehungen
            personBuilder
                .HasOne(x => x.Geschlecht)
                .WithMany(x => x.Personen)
                .HasForeignKey(x => x.GeschlechtId);
            personBuilder
                .HasOne(x => x.Herkunft)
                .WithMany(x => x.Personen)
                .HasForeignKey(x => x.HerkunftId);
            herkunftBuilder
                .HasOne(x => x.Kontinent)
                .WithMany(x => x.Herkunft)
                .HasForeignKey(x => x.KontinentId);

            // m zu n Beziehungen
            personhobbyBuilder
                .HasOne(x => x.Person)
                .WithMany(x => x.PersonenHobbys)
                .HasForeignKey(x => x.PersonId);
            personhobbyBuilder
                .HasOne(x => x.Hobby)
                .WithMany(x => x.PersonenHobbys)
                .HasForeignKey(x => x.HobbyId);

            // View
            modelBuilder.Entity<VW_Test>()
                        .HasNoKey()
                        .ToView("VW_Test");

            base.OnModelCreating(modelBuilder);
        }

        private EntityTypeBuilder<T> Build<T>(ModelBuilder mb)
            where T : Entity
        {
            var entity = mb.Entity<T>();
            entity.HasKey(x => x.Id);

            // Shadow Properties anlegen die für Entity nicht sichtbar sind und autom. gefüllt werden
            entity.Property<string>("LatestUser")
                  .HasDefaultValue("Admin");

            return entity;
        }
    }

Der Zugriff auf alle anderen Tabellen klappt problemlos.
Anbei noch ein Auszug aus meinem DB Browser, die Ansicht existiert und kann auch mit SQL abgerufen werden im DB Browser.

01.01.2021 - 15:12 Uhr

Schaue ich mir an, danke dir.

01.01.2021 - 15:09 Uhr

Das hier erzeugt leider den selben Fehler.

var result = dbContext.VW_Test.ToList();

Woher kommt .ToView, das findet er leider nicht?

Danke für den Hinweis mit dem Unterstrich, ist eh erstmal alles nur ein Test.
Das View existiert zu 100% und beinhaltet auch Daten.

01.01.2021 - 15:05 Uhr

Hi Abt,

das Thema mit await und async wollte ich mir separat ansehen, habe erstmal darauf verzichtet da ich noch nicht wirklich verstehe was da passiert, bzw. was es genau bringt. Könntest du es evtl. kurz beschreiben anhand eines kleinen Beispiels, oder mir evtl. ein gutes Tutorial dazu emphelen?

Und kannst du mir auch noch erklären wozu genau das dient? brauch man das Ausrufungszeichen hinter dem null?


public string Vorname { get; set; } = null!;

Gruß Steven

01.01.2021 - 14:58 Uhr

Hallo zusammen,

ich bekomme beim Zugriff auf ein View welches definitiv auf der Sqlite DB existiert den Fehler "no such table: VW_Test". Der generelle Zugriff auf die Tabellen funktioniert wunderbar. Könnt ihr mir evtl. sagen was hier das Problem ist?


        public DbSet<VW_Test> VW_Test { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite(@"Data Source=D:\Daten\EntityFrameworkTutorial.db");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<VW_Test>()
                        .HasNoKey()
                        .ToView("VW_Test");

            base.OnModelCreating(modelBuilder);
        }


public class VW_Test
    {
        public string Vorname { get; set; }
        public string Nachname { get; set; }
    }


private static void UseCase_QueryTypes(DataContext dbContext)
        {
            var result = dbContext.Set<VW_Test>().ToList();
        }

28.12.2020 - 23:56 Uhr

Danke dir, das hat schon geholfen 😃

28.12.2020 - 18:55 Uhr

Hallo zusammen,

ich bin gerade dabei mir EF Core anzueignen. Hier mein Beispiel mit Sqlite:


public class DataContext : DbContext
    {
        // Für die zu erzeugende Tabelle nach dem Code first Prinzip
        public DbSet<Person> Personen { get; set; }
        public DbSet<Geschlecht> Geschlechter { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite(@"Data Source=D:\Daten\Steven IT\Daten\C# Entity Framework Core\Beispielanwendung Einfach\Beispielanwendung Einfach\Data\EntityFrameworkTutorial.db");
        }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Geschlecht>()
                .HasMany(g => g.Personen)
                .WithOne(p => p.Geschlecht);
        }
    }


public class Person
    {
        public int Id { get; set; }
        public string Vorname { get; set; }
        public string Nachname { get; set; }
        public Geschlecht Geschlecht { get; set; }
    }


public class Geschlecht
    {
        public int Id { get; set; }
        public string Bezeichnung { get; set; }
        public List<Person> Personen { get; set; }
    }


class Program
    {
        static void Main(string[] args)
        {
            using (var db = new DataContext())
            {
                var maennlich = new Geschlecht();
                maennlich.Bezeichnung = "Männlich";
                db.Geschlechter.Add(maennlich);

                var weiblich = new Geschlecht();
                weiblich.Bezeichnung = "Weiblich";
                db.Geschlechter.Add(weiblich);
                db.Personen.Add(person);

                person = new Person();
                person.Vorname = "Steven";
                person.Nachname = "S.";
                person.Geschlecht = maennlich;
                db.Personen.Add(person);

                person = new Person();
                person.Vorname = "Lisa";
                person.Nachname = "S.";
                person.Geschlecht = weiblich;
                db.Personen.Add(person);

                db.SaveChanges();
            }
            using (var db = new DataContext())
            {
                foreach (var person in db.Personen)
                {
                    Console.WriteLine($"{person.Id}. {person.Vorname} {person.Nachname} ({person.Geschlecht.Bezeichnung})");
                }
            }

            Console.ReadKey();
        }
    }

Das speichern klappt wunderbar, hier wird die Id des Geschlechts autom. hinzugefügt.
Jedoch ist beim Anzeigen der Daten in der Console person.Geschlecht = null. In der Datenbank sieht alles gut aus.
Könnt ihr mir sagen was hier noch fehlt?

Gruß Steven

02.05.2020 - 01:04 Uhr

Danke für die Antwort, ich schaue mir das Thema Styles und Templates direkt ausführlich an.

02.05.2020 - 00:56 Uhr

Hallo,

ich habe mir ein Statusfenster gebaut und möchte dieses ständig aktualisieren während der Laufzeit.
Das klappt zwar über INotifyPropertyChanged, jedoch immer nur wenn das Programm gerade nichts zu tun hat. In Win Forms konnte man einfach this.Refresh() machen, was mache ich hier falsch?


namespace PSWPF
{
    public partial class WPFSplashScreen : Window
    {
        #region Props und Konstruktor
        private Status oStatus;

        public WPFSplashScreen(string sProgramName, string sVersion)
        {
            InitializeComponent();

            labProgramName.Content = sProgramName;
            labVersion.Content = sVersion;

            oStatus = new Status();
            this.DataContext = oStatus;
        }
        #endregion

        #region Hilfsmethoden
        public void SetStatusText(string sText)
        {
            oStatus.sStatus = sText;
        }

        public string GetStatusText()
        {
            return oStatus.sStatus;
        }
        #endregion
    }

    public class Status : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        private string _status;
        public string sStatus
        {
            get { return _status; }
            set
            {
                _status = value.Trim();

                OnPropertyChanged("sStatus");
            }
        }

        private void OnPropertyChanged(string sProperty)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(sProperty));
        }
    }
}

Diesen öffne ich über meine Hauptanwendung und versuche ihn zur Laufzeit zu ändern.


...
this.oWPFSplashScreen = new WPFSplashScreen(this.ProgramName, this.Version);
this.oWPFSplashScreen.Show();

this.oWPFSplashScreen.SetStatusText("Login...");
...

Das Binding funktioniert soweit, jedoch sehe ich den Text "Login..." erst wenn alle Prozesse nach this.oWPFSplashScreen.SetStatusText("Login..."); abgeschlossen sind. Wie bekomme ich den Text noch während die Methode abgearbeitet wird angzeigt?

Da ich noch ziemlicher Anfänger bin würde ich mich über ein ausführliches Beispiel was ich zu tun habe sehr freuen.

Gruß Steven

01.05.2020 - 14:10 Uhr

Hallo zusammen,

ich habe in einem seperaten Projekt ein Window welches in den Ressourcen ein festes Bild hat. Pfad "Resources\Logo.bmp". Dieses habe ich über die Projekteigenschaften auch unter Ressourcen hinzugefügt.
In diesem Projekt zeige ich das Image so an:


<Image Name="pbLogo" Width="230" Height="66" Grid.Column="0" Source="/Resources/Logo.bmp" />

Das funktioniert auch in dem Projekt. Wenn ich die dll jedoch in einem anderen Projekt einbinde und dieses Window öffnen will mit...


WPFWindow oWPFWindow = new WPFWindow();
oWPFWindow .Show();

..dann zeigt er mir das Fenster ohne das Logo an. Wie kann ich das Logo fest in diesem Window verankern, ohne das ich es im neuen Projekt auch wieder einbinden muss?

Danke vorab für die Hilfe.

30.04.2020 - 18:20 Uhr

Base:


namespace PSBase.FE.WPF
{
    public partial class PSWPF : Window
    {
      ...
    }
}


<Window x:Class="PSBase.FE.WPF.PSWPF"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:PSBase.FE.WPF"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="300" Background="WhiteSmoke">
    <StackPanel>

    </StackPanel>
</Window>

Testanwendung:


...
using PSBase.FE.WPF;

namespace Test
{
    public partial class MainWindow : PSWPF
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}


<local:PSWPF x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:PSBase.FE.WPF"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        
    </Grid>
</local:PSWPF>

Habe es mal so versucht, dann kommen folgende Fehler:

Fehler 1: Der Name "PSWPF" ist im Namespace "clr-namespace:PSBase.FE.WPF" nicht vorhanden.
Fehler 2: local:PSWPF wurde nicht gefunden

30.04.2020 - 17:02 Uhr

Hallo zusammen,

leider konnte ich mein Problem auch nach längerer Suche nicht lösen. Ich habe mir eine Klassenbibliothek als Basis für WPF Projekte entwickelt.


namespace PSBase.FE.WPF
{
    public partial class PSWPF : Window
    {
      ...
    }
}


<Window x:Class="PSBase.FE.WPF.PSWPF"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:PSTeam.PSBase.FE.WPF"
        mc:Ignorable="d"
        Title="MainWindow" Height="300" Width="300" Background="WhiteSmoke">
    <StackPanel>

    </StackPanel>
</Window>

Nun versuche ich diese in einem neuen WPF Projekt einzubinden.


...
using PSBase.FE.WPF;

namespace Test
{
    /// <summary>
    /// Interaktionslogik für MainWindow.xaml
    /// </summary>
    public partial class MainWindow : PSWPF
    {
        public MainWindow()
        {
            InitializeComponent();
        }
    }
}


<Window x:Class="Test.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:Test"
        mc:Ignorable="d"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        
    </Grid>
</Window>

Hier kommt beim kompilieren dann der im Betreff genannte Fehler. Was genau muss ich ändern damit ich in meinem Testprojekt die Base nutzen kann?

Danke vorab,

Gruß Steven

31.12.2017 - 11:17 Uhr

Leider scheine ich zu blöd zu sein um das Ganze zu verstehen. Ich bräuchte evtl. etwas Starthilfe.


public class Repository
{
        private string sSQLPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "Team.SQLite");

        public Repository()
        {
            using (SQLiteConnection con = new SQLiteConnection(new SQLitePlatformAndroidN(), sSQLPathSpielstatistik, false))
            {
                con.CreateTable<SAI_Saison>();
                con.CreateTable<SPI_Spieler>();
                con.CreateTable<SAI_SPI_Saison_Spieler>();
            }
        }

        private List<SPI_Spieler> GetAll_SPI_Spieler()
        {
            using (SQLiteConnection con = new SQLiteConnection(new SQLitePlatformAndroidN(), sSQLPath, false))
            {
                return con.Table<SPI_Spieler>().Where(s => s.Aktiv == true).ToList() ?? new List<SPI_Spieler>();
            }
        }

        public List<SAI_Saison> GetAll_SAI_Saison()
        {
            using (SQLiteConnection con = new SQLiteConnection(new SQLitePlatformAndroidN(), sSQLPath, false))
            {
                return con.Table<SAI_Saison>().ToList() ?? new List<SAI_Saison>();
            }
        }

        private SAI_SPI_Saison_Spieler Get_SAI_SPI_Saison_Spieler(int iSaison_ID, int iSpieler_ID)
        {
            using (SQLiteConnection con = new SQLiteConnection(new SQLitePlatformAndroidN(), sSQLPath, false))
            {
                return con.Table<SAI_SPI_Saison_Spieler>().Where(s => s.Saison_ID == iSaison_ID && s.Spieler_ID == iSpieler_ID).ToList().FirstOrDefault() ?? new SAI_SPI_Saison_Spieler();
            }
        }
}

Hier ein Auszug aus meiner Repository Klasse aus App1. Jetzt will ich im Grunde lediglich aus App2 auf die bereits dort gespeicherten Daten zugreifen.
Am besten arbeite ich immer mit Video Tutorials. Nur leider habe ich noch keines gefunden was mich weiter bringt.

Gruß Steven

28.12.2017 - 14:31 Uhr

Gibt es irgendwo evtl. ein Beispiel? Mir geht es nur darum Daten aus 2 Tabellen meiner SQLite Datenbank zu übertragen.

28.12.2017 - 08:30 Uhr

Hallo zusammen

ich habe zwei Apps mit ähnlicher Datenbankstruktur welche beide mit SQLLite erstellt wurden.
hier ein Beispiel.


// Zugriff aus der App 1
private string sSQLPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "App.SQLite");
// Pfad: "/data/user/0/com.App/files/App.SQLite"

using (SQLiteConnection con = new SQLiteConnection(new SQLitePlatformAndroidN(), sSQLPath, false))
{
       con.CreateTable<TAB_Tabelle>();
       // Insert...
}

Jetzt Will ich aus der zweiten App auf die Datenbank der ersten App zugreifen um z.B. grundlegende Daten zu übernehmen.


// Zugriff aus der App 2
private string sSQLPath = "/data/user/0/com.App/files/App.SQLite"

if (File.Exists(sSQLPath))
{
   using (SQLiteConnection con = new SQLiteConnection(new SQLitePlatformAndroidN(), sSQLPath, false))
   {
          con.CreateTable<TAB_Tabelle>();
          // Get...
   }
}

Hier kommt die Fehlermeldung SQLite.Net.SQLiteException: Could not open database file: /data/user/0/com.App/files/Trainingsbeteiligung.SQLite (CannotOpen).

Wenn ich z.B. die Datenbank kopieren will mit File.Copy("/data/user/0/com.App/files/App.SQLite", "/data/user/0/com.App2/files/App.SQLite", true);,
kommt die Fehlermeldung System.UnauthorizedAccessException: Access to the path.
Evtl. ist es ein Berechtigungsproblem.

Geht es überhaupt auf die DB der anderen App zu zu greifen?

Gruß Steven

02.06.2017 - 15:27 Uhr

Die WebMethode ist meine eigene. Leider hilft auch das löschen und neu erstellen der dlls nicht.
Komisch ist das ich aus einer anderen Konsolenanwendung in den WS debuggen kann. Es läuft alles lokal über einen WS der auch lokal ist. Die Konsolenanwendung ist doch im Grunde nichts anderes wie die Win Anwendung.

02.06.2017 - 15:00 Uhr

Wie genau mache ich das?

02.06.2017 - 14:06 Uhr

Daran habe ich auch schon gedacht, muss ich was bestimmtes löschen an einem bestimmten Ort damit es neu erstellt wird?

02.06.2017 - 09:42 Uhr

Hallo Zusammen,

seit kurzen habe ich ein Problem damit aus ein Windows Anwendung in meinen lokalen WS zu debuggen, per Einzelschritt. Hier kommt die angehängte Fehlermeldung.

Bevor ich jetzt den kompletten Code poste, hoffe ich das jemand evtl. auf anhieb weiß woher diese Fehlermeldung kommt.

Danke schonmal

27.04.2017 - 23:55 Uhr

Hallo zusammen,

gibt es eine Möglichkeit im DatePicker mehrere Tage zu markieren, um zu erkennen ob zu bestimmten Tagen z.B. bereits Einträge hinterlegt sind? Quasi genauso wie der heutige Tag farbig anders dargestellt ist.

Gruß Steven

30.03.2017 - 10:00 Uhr

Versuche ich, seltsamerweise steht in Extras -> Optionen -> Umgebung -> Internationale Einstellung nur Deutsch zur Auswahl. Will ich Englisch installieren sagt er mir es wäre bereits installiert.

30.03.2017 - 09:40 Uhr

Hallo zusammen,

ich versuche gerade aus meinem fertigen Projekt eine APK mit VS 2013 zu erstellen. Hierzu gehe ich wie folgt vor:

  • Erstellen -> Projektmappe bereinigen
  • Erstellen -> Projektmappe neu erstellen
  • Erstellen -> Archivieren

Er fängt auch an im Release Verzeichnis ein entsprechendes Unterverzeichnis ...apk.mSYM zu erstellen, leider kommt jedoch die folgende Fehlermeldung:

Fehlermeldung:
Es wurden Konflikte zwischen verschiedenen Versionen derselben abhängigen Assembly gefunden, die nicht gelöst werden können.
Diese Verweiskonflikte werden im Buildprotokoll aufgelistet, wenn die Protokollausführlichkeit auf "Ausführlich" festgelegt ist.

Ich weiß leider nicht wirklich wo genau ich jetzt suchen soll.

Danke für eure Hilfe.

06.03.2017 - 14:51 Uhr

Ich konnte das Problem nun endlich lösen.

Zum einem wie schon angesprochen durch das Paket.

  • SQLite.Net.Platform.XamarinAndroidN (Version 3.1.1)

Zusätzlich brauchte ich dann noch das Paket:

  • Mono.Data.Sqlite

Die Warnung ist nun verschwunden und mein Projekt/Leben hat wieder einen Sinn 😃

05.03.2017 - 12:40 Uhr

Nach einigen weiteren Recherchen kam ich darauf,

SQLite.Net.Platform.XamarinAndroid (Version 3.1.0)

durch

SQLite.Net.Platform.XamarinAndroidN (Version 3.1.1)

zu ersetzen, jedoch kommt nun die unten stehende Fehlermeldung.
Fehlt mir noch ein bestimmtes Paket? Die dll SQLite.Net zeigt die version 3.1.0 obwohlich das Paket SQLite.Net PCL Version 3.1.1 installiert habe.

Für jeden Hinweis bin ich mehr als dankbar.

04.03.2017 - 12:06 Uhr

Ich habe folgendes gefunden wenn ich nur die Warnungen aktiviere. Hier finde ich ebenfalls auch die Meldung um die es geht. Hilft das zur weiteren Analyse?

04.03.2017 - 11:57 Uhr

Ich denke das ist in VS2013 das Fenster unter Extras -Android -> Geräteprotokoll.
Leider steht dieses Logging niemals still wenn ich das Debugging starte. Unter Filter gibt es zig Auswahlmöglichkeiten. Ich weiß jedoch überhaupt nicht was genau ich am besten auswähle.

03.03.2017 - 18:40 Uhr

Wie genau komm ich da dran. Ich debugge bzw.
deploye direkt auf mein S7, die Log existiert dann doch irgendwo dort. Danke für einen kurzen Hinweis.

03.03.2017 - 08:10 Uhr

Welche Version von Xamarin und der SQLite library verwendest du?

Kannst du mir damit weiterhelfen?

02.03.2017 - 11:37 Uhr

Hier mein Code. Mit blocksDescendants verhindere ich das man einen Wert willkürlich durch Texteingabe in dem Control ändern kann.


<NumberPicker
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:descendantFocusability="blocksDescendants"
        android:id="@+id/numberPicker" />


string[] arValues = { "Text1", "Text2" };
numberPicker.SetDisplayedValues(arValues);
numberPicker.MinValue = 1;
numberPicker.MaxValue = 2;

02.03.2017 - 10:23 Uhr

Ich hoffe das ich richtig schaue. Wenn ich auf die Assembly SQLite.Net oder SQLite.Net.Plattform.Xamarin.Android klicke bekomme ich im Eigenschaftsfenster die Version 3.1.0.0 angezeigt, bzw. die Laufzeitversion v4.0.30319.

In der Systemsteuerung -> Programme und Funktionen steht bei Xamarin die Version 4.3.0.784.
Ich arbeite außerdem mit VS2013.

02.03.2017 - 10:08 Uhr

Hallo zusammen,

ich habe gestern mein Samsung S7 auf die Android Version 7.0 aktualisiert.
Seit dem bekomme ich bei jedem Programmstart meiner Xamarin App eine Warnung angezeigt, sh. Screenshot. Die Ausführung des Programms ist aber nicht beeinträchtigt.

Hier ein Auszug aus meinem Code wie ich den DB Zugriff handhabe. Wie gesagt klappt alles wunderbar, aber die Warnung nervt natürlich bei der Verwendung.
Ich habe im Netz dazu auch schon das ein oder andere gefunden. Leider brachte mich das nicht wirklich weiter.
Eventuell könnt ihr mir weiterhelfen.


string sPath = Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), "TB.SQLite");
using (SQLiteConnection con = new SQLiteConnection(new SQLitePlatformAndroid(), s.Path, false))
{
      return con.Table<MyTable>().ToList() ?? new List<MyTable>();
}

01.03.2017 - 08:28 Uhr

Ich arbeite mit VisualStudio und da gibt es den NumberPicker. Das ist im Grunde das was ich brauche. Kann man den auch für Text nutzen, quasi als TextPicker?

01.03.2017 - 08:00 Uhr

Hallo zusammen,

ich benötige für mein kleines Android Projekt eine Art Liste. In dieser soll durch hoch oder runter scrollen ein bestimmter Wert ausgewählt werden, der Wert der in der Mitte steht. Ich weiß das dies in iOS über einen sogenannten Popover Controler gelöst werden kann. Doch wie sieht das in Android aus.

Danke schonmal.

24.02.2017 - 09:03 Uhr

Hallo zusammen,

ich bin bin gerade an der Entwicklung an einer ersten kleinen App mit Xamarin. Momentan ausschließlich für Android. Wie verhält sich das eigentlich mit der Veröffentlichung im Store wenn man z.B. diese für 0,99 € anbieten möchte? Wird hier ein Kleingewerbe verlangt?

Außerdem würde mich interessieren wie es damit ist seine Idee schützen zu lassen, so dass man diese nicht einfach nachmachen kann?

Gruß Steven

02.02.2017 - 15:42 Uhr

Die 101 😃.

Was aber irgendwie nicht geklappt hat war:


public override void OnBackPressed()
{
       base.OnBackPressed();

       Intent oIntend = new Intent(this, typeof(SavedItemsViewActivity));
       oIntend.PutExtra("lstSavedIems", JsonConvert.SerializeObject(lstSavedItems));
       SetResult(Result.Ok, oIntend);
       Finish();
}

Hier ist das Intend dann in der OnActivityResult null.