Sorry - ich weiß nicht, ob ich in diesem Forum jetzt richtig bin - aber ich habe erstmal nichts passenderes gefunden.
Ich habe eine WPF-Anwendung (mit .NET6) mit einer Text-to-Speech Funktion.
In meiner Entwicklungsumgebung unter Windows 10 funktioniert alles einwandfrei. Aber auf einem anderen Rechner unter Windows 11 gibt es den Namespace System.Speech (bzw. dann System.Speech.Synthesis) nicht.
Hat jemand einen Tipp, woran das liegen könnte und was ich da machen kann/muss?
Vielen Dank!
Ist denn dort auch das .NET6-SDK installiert?
Und wie hast du die System.Speech
-Assembly bei dir im Projekt eingebunden? S.a. How to do TTS with .Net 6?
Danke für den Hinweis.
Natürlich ist das .NET6 installiert. Für alle Fälle habe ich es nochmal aktualisiert. Es ist wie geschrieben ein W-11! Ist das da evtl. in System nicht mehr dabei? Das kann ich mir eigentlich nicht vorstellen...
Eingebunden in die App ganz normal mittels "using" - der Rest von System ist ja auch da.
Auf mehreren anderen (allerdings Windows 10-Rechnern) gibt es dieses Problem nicht. Da läuft alles problemlos.
Mit fällt ggw. einfach nichts mehr ein.
Naja - Fehler gefunden ist zuviel gesagt.
Aber jetzt funktioniert es. Ich habe die System.Speech DLL gelöscht und neu installiert. Nun geht es.
Warum - das ist mir allerdings völlig unklar. Ggf. war die DLL einfach fehlerhaft.
Wieso sprichst Du von einer System.Speech "DLL" und "von gelöscht" und "neu installiert"?
In .NET Core / .NET5+ solltest Du das alles über das NuGet Paket lösen - und nichts von Hand machen.
Ist das da evtl. in System nicht mehr dabei? Das kann ich mir eigentlich nicht vorstellen...
Liest sich nicht so, dass Du hier die Referenzen korrekt verwendet hast (auch schon vorher nicht)...
Siehe Grundlagen dazu: [FAQ] Das .NET Ökosystem - .NET, .NET Core, .NET Standard, NuGet und Co
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
Danke für den Tip. Ich hatte die System.Data.dll einfach neu aufgespielt. Dann war speech da. Aber das Problem nicht gelöst, da dann trotzdem andere Sachen fehlen.
Das Paket braucht man unter .NET6 wohl eher nicht mehr.
Es gibt dazu eine wie ich finde tolle Anleitung unter
https://www.youtube.com/watch?v=2-Ts05KKQA0
Die habe ich benutzt und auf meinem Desktop-Rechner funktioniert das alles super.
Gehe ich mit dieser Applikation in die Entwicklungsumgebung meines Laptop tritt der genannte Fehler auf.
Er findet dann auch z.B. System.Data.OLEdb nicht.
Ich habe keine Ahnung, woran das liegen könnte....
Zitat von visionmaster
Das Paket braucht man unter .NET6 wohl eher nicht mehr.
Bitte lern die Basics. Für Dich.
Natürlich braucht man das unter .NET 6 weiterhin. Die Besonderheit ist hier, dass als Basis nicht nur ".NET 6" sondern ".NET 6 Windows" verwendet wird, sehr einfach zu sehen in den Projektsettings
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0-windows</TargetFramework>
<Nullable>enable</Nullable>
Dadurch sind gewisse Desktop-abhängige Features (wie Speech) enthalten.
Das gilt aber nicht für das Crossplatform-fähige .NET 6.
Er findet dann auch z.B. System.Data.OLEdb nicht.
Auch hier ist wieder NuGet der erste Anlaufpunkt.
https://www.nuget.org/packages/System.Data.OleDb/6.0.0
- performance is a feature -
Microsoft MVP - @Website - @AzureStuttgart - github.com/BenjaminAbt - Sustainable Code
@Abt: Ja - Du hattest Recht. Ist schon dumm - aber das war mir nicht klar.
Warum die Pakete auf meinem Desktop offensichtlich schon installiert waren, kann ich gar nicht nachvollziehen...
Also nochmal recht vielen Dank!! Jetzt funktioniert alles.