Я работаю над проектом, в котором у меня есть библиотека 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))
Я понимаю, что это кажется двойным вопросом, но я не знаю, какой из нихвызывающий проблему ...
Заранее спасибо.