Ich habe eine ASP.NET Core App, die auf .NET 4.5.2 ausgeführt wird..NET Core App sucht nach eingebetteter Datei im falschen Ordner
Die App verwendet eine Datei hello.json
. Ich ursprünglich auf den Build-Ordner kopiert, wie folgt aus:
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true,
"copyToOutput": [ "hello.json" ]
},
Die Datei dann auf ...\bin\Debug\net452\win7-x64\
während der Kompilierung kopiert wurde.
Ich habe kein Problem MyApp.exe laufen, aber wenn ich zu ...\bin\Debug\net452\
gehen und laufen win7-x64\MyApp.exe
, bekomme ich folgende Fehlermeldung, wenn die Datei zu lesen versuchen: System.IO.FileNotFoundException Could not find file '...\bin\Debug\net452\hello.json'.
Ich versuchte hello.json
in der Versammlung einzubetten, wie folgt:
"buildOptions": {
"emitEntryPoint": true,
"preserveCompilationContext": true,
"embed": [ "hello.json" ]
}
aber ich habe das gleiche Ergebnis.
Wie die App verstehen, dass es nach der Datei suchen soll, wo die .exe
ist, nicht wo es ausgeführt wird?
Können Sie uns den Code zeigen, der die Datei von der Festplatte liest? –
Es ist nur 'using (var reader = neuer StreamReader (jsonFilePath, Encoding.UTF8)) {return reader.ReadToEnd(); } 'mit jsonFilePath der Pfad relativ zu der .exe. Ich erkannte, dass das Einbetten der Datei das ändern muss (mein Beispiel funktionierte noch, aber weil ich hallo.json nicht aus dem Ordner entfernt hatte), arbeite ich an diesem ATM. Als alternative Lösung kann ich den ausführbaren Pfad mit 'Path.GetDirectoryName (Assembly.GetExecutingAssembly() .Location) 'finden, aber es sieht schmutzig aus. – KevinG