Проблемы с Mime - чтение потока текстового файла - PullRequest
0 голосов
/ 25 октября 2019

Я работаю над проектом, в котором у меня есть библиотека Class, и в этой библиотеке у меня есть класс mime, который читает текстовый файл со списком расширений файлов. Я пытаюсь сузить суть проблемы. Во время отладки он возвращается как ноль. Однако, читая окно вывода, я заметил, что класс Class - Assembly библиотеки равен Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = null - Тип System.Reflection.Assembly {System.Reflection.RuntimeAssembly} .. Моя путаница заключается в том, что яне знаю, если это то, почему он возвращается ноль. Потому что он не видит ключ или что он действительно не может видеть текстовый файл. Текстовый файл находится в главном каталоге. Я даже создал другой текстовый файл, чтобы убедиться, что первый не был поврежден. Когда я прохожу через процесс, все в порядке, пока это не поражает читателя и автораони оба нулевые. Я использую System.IO и System.Reflections. Ключевой вопрос один, я не уверен, почему он вообще отсутствует. Так что я хотел бы знать, есть ли способ получить PublicKeyToken для текущего класса библиотеки или мне нужно создать совершенно новый?

Я просмотрел PublicKeyToken, но большинство из них ссылаются на пакеты NuGet, в которых отсутствует ключ. Я уверен, что мой код подходит для текстового файла. Код ниже.

В корне класса библиотеки находится файл mimeTypesFile.txt. Mime.cs также находится в корне. В этом есть некоторые закомментированные элементы, так как я отлаживал и изменил несколько вещей.

using System;

internal static class Mime
{
    private static Dictionary<string, string> _mimeTypes;


    static Mime()
    {
        _mimeTypes = new Dictionary<string, string>();
        //Assembly assembly = Assembly.GetExecutingAssembly();
        var assembly = Assembly.GetExecutingAssembly();
        var resourceName = "HMILibrary.mimeTypesFile.txt";

        using (Stream stream = assembly.GetManifestResourceStream(resourceName))
        {
            using (StreamReader reader = new StreamReader(stream))
            {
                while (!reader.EndOfStream)
                {
                    string line = reader.ReadLine();

                    if (string.IsNullOrEmpty(line) || line.StartsWith("#"))
                    {
                        continue;
                    }

                    var parts = line.Trim().Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);

                    if (parts.Length > 1)
                    {
                        var mime = parts[0];

                        for (var i = 1; i < parts.Length; i++)
                        {
                            var ext = parts[i].ToLower();
                            if (!_mimeTypes.ContainsKey(ext))
                            {
                                _mimeTypes.Add(ext, mime);
                            }
                        }
                    }
                }
            }
        }
    }

Во время отладки он никогда не проходит мимо (Stream stream = Assembly.GtManifestResourceStream (resourceName))

Я понимаю, что это кажется двойным вопросом, но я не знаю, какой из нихвызывающий проблему ...

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...