c# - sourcecode - Wie schreibe ich in eine Datei in.NET Core?




github.net build server (4)

Ich möchte die Bluetooth LE-Funktionen in .NET Core (speziell BluetoothLEAdvertisementWatcher) verwenden, um einen Scanner zu schreiben, der Informationen in einer Datei protokolliert. Dies soll als Desktop-Anwendung und vorzugsweise als Befehlszeilen-App ausgeführt werden.

Konstruktoren wie System.IO.StreamWriter (string) sind anscheinend nicht verfügbar. Wie erstelle ich eine Datei und schreibe darauf?

Ich wäre genauso glücklich, wenn ich eine System.Console.WriteLine (string) hätte, aber diese scheint auch nicht unter .NET Core verfügbar zu sein.

Update: Um zu klären, ob ich ein Programm haben könnte, das so aussieht, als würde es ohne Fehler laufen, werde ich zu den Rennen gehen.

using System;
using Windows.Devices.Bluetooth.Advertisement;

namespace ConsoleApplication
{
    public class Program
    {
        public static void Main(string[] args)
        {
            BluetoothLEAdvertisementWatcher watcher = new BluetoothLEAdvertisementWatcher();
            Console.WriteLine("Hello, world!");
        }
    }
}

Update 2: Hier ist die Projekt.json Datei:

{
  "dependencies": {
    "Microsoft.NETCore.UniversalWindowsPlatform": "5.0.0"
  },
  "frameworks": {
    "uap10.0": {}
  },
  "runtimes": {
    "win10-arm": {},
    "win10-arm-aot": {},
    "win10-x86": {},
    "win10-x86-aot": {},
    "win10-x64": {},
    "win10-x64-aot": {}
  }
}

Die Ausgabe des Befehls dotnet -v run enthält diese Fehlermeldung:

W:\src\dotnet_helloworld>dotnet -v run
...
W:\src\dotnet_helloworld\Program.cs(2,15): error CS0234: The type or namespace name 'Devices' does not exist in the namespace 'Windows' (are you missing an assembly reference?)
...

Ab heute, mit RTM, scheint es auch diesen kürzeren Weg zu geben:

var watcher = new BluetoothLEAdvertisementWatcher();

var logPath = System.IO.Path.GetTempFileName();
var logWriter = System.IO.File.CreateText(logPath);
logWriter.WriteLine("Log message");
logWriter.Dispose();

Dies ist die Lösung, die ich verwende. Es verwendet weniger Codezeilen und erledigt den Job genauso gut. Es ist auch sehr vergleichbar mit .NET Core 2.0

using (StreamWriter writer = System.IO.File.AppendText("logfile.txt"))
{
    writer.WriteLine($"log message");
}

Noch besser:

var logPath = System.IO.Path.GetTempFileName();
using (var writer = File.CreateText(logPath))
{
    writer.WriteLine("log message"); //or .Write(), if you wish
}

Sie können die System.IO-Referenzen mithilfe des Corefx- Git-Repositorys abrufen . Dadurch wird der gesuchte StreamWrite (string) -Konstruktor verfügbar gemacht.

Dieses Repository wird Ihnen auch die Console.WriteLine (string) -Funktion geben, nach der Sie suchen.





coreclr