Использование приложения Blazor wasm (NET стандарт 2.1) и BlazorFileReader в следующем фрагменте кода (сокращенно, в моем приложении он разделен на файл .razor и файл .razor.cs, но сокращены и собраны здесь для простоты):
@inject Blazor.FileReader.IFileReaderService fileReaderService
@using Blazor.FileReader;
<div class="ml-2">
<input type="file" @ref="InputElement" @onchange="FilesSelected" multiple accept=".txt,.csv" />
</div>
@code {
ElementReference InputElement;
[Parameter] public List<string> FileContent { get; set; }
async Task FilesSelected()
{
foreach (var file in await fileReaderService.CreateReference(InputElement).EnumerateFilesAsync())
{
using (Stream stream = await file.OpenReadAsync())
{
FileContent = await ReadLinesAsync(stream, Encoding.UTF8);
}
}
}
public async Task<List<string>> ReadLinesAsync(Stream stream, Encoding encoding)
{
using (var reader = new StreamReader(stream, encoding))
{
string line;
var result = new List<string>();
while ((line = await reader.ReadLineAsync()) != null)
{
result.Add(line);
}
return result;
}
}
}
Запуск этого кода в режиме отладки (предварительная версия Visual Studio 2019 v 16.6) отлично читает любой текстовый файл. Но при работе в режиме выпуска StreamReader.ReadLineAsyn c () возвращает пустые строки.
Кто-нибудь знает, почему ReadLineAsyn c () делает это? Я смотрел это ...