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.
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?
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
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>
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?
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?
Danke für die Hilfe, so habe ich es probiert. Trotz Erfolgsmeldung habe ich einen leeren publish Ordner.
Woran könnte das liegen?
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.
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
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.