Есть ли способ увидеть ресурсы, которые находятся в .net dll - PullRequest
4 голосов
/ 09 июля 2011

Я пытаюсь отладить ошибку Entity Framework: Невозможно загрузить указанный ресурс метаданных.

Все обычные исправления не работают для меня, и я хотел бы увидетьесли в ресурсе есть файлы .csdl, .ssdl и .msl (как они должны быть).

Если вам известен бесплатный инструмент, который может это сделать, ответьте на него.

Примечание: У меня нет доступа к Red Gates Reflector.Я попробовал новый dotPeek от Resharper, но он просто показывает код, а не ресурсы.

Есть идеи, как мне получить эти ресурсы, которые предположительно находятся в моей dll?

Ответы [ 2 ]

8 голосов
/ 09 июля 2011

Попробуйте Telerik's JustDecompile

Они обещают, что это будет бесплатно навсегда

Вот снимок экрана с развернутым узлом ресурсов

enter image description here

5 голосов
/ 09 июля 2011

Интересно, почему @George удалил свой ответ, потому что ILDASM действительно покажет вам ресурсы в манифесте сборки:

.mresource public Model.csdl
{
  // Offset: 0x00000000 Length: 0x00000394
}
.mresource public Model.ssdl
{
  // Offset: 0x00000398 Length: 0x00000352
}
.mresource public Model.msl
{
  // Offset: 0x000006F0 Length: 0x000002B7
}

В любом случае, вы тратите время на ожидание ответа вместо того, чтобы думать об уже имеющихся у вас инструментах.Как насчет написания простого консольного приложения, которое просто покажет вам ресурсы, включенные в вашу сборку?

using System;
using System.Reflection;

namespace AssemblyBrowser
{
    class Program
    {
        static void Main(string[] args)
        {
            if (args.Length != 1)
            {
                System.Console.WriteLine("Provide path to assmebly!");
                return;
            }

            try
            {
                var assembly = Assembly.LoadFrom(args[0]);
                foreach (var name in assembly.GetManifestResourceNames())
                {
                    Console.WriteLine("Resource: {0}", name);
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Error: {0}", e.Message);
            }
        }
    }
}
...