Загрузка библиотеки Silverlight в веб-приложение ASP.NET MVC для размышления? - PullRequest
0 голосов
/ 01 октября 2009

Это довольно специфический вопрос, но мне нужно загрузить библиотеку приложения Silverlight в мое веб-приложение ASP.NET MVC, чтобы обдумать типы и создать список для выбора пользователя. Цель приложения - позволить пользователям загружать свои собственные библиотеки и тестировать их в «изолированной» среде.

В любом случае, после некоторых трудностей, я достиг загрузки файлов в ASP.NET MVC. Теперь, когда я пытаюсь загрузить загруженную сборку для отражения, я получаю следующую ошибку:

{"Cannot resolve dependency to assembly 'System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e' because it has not been preloaded. When using the ReflectionOnly APIs, dependent assemblies must be pre-loaded or loaded on demand through the ReflectionOnlyAssemblyResolve event.":"System.Windows, Version=2.0.5.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e"}

Я добавил указанную сборку в качестве ссылки в проекте, но безрезультатно.

Код для отображения сборки выглядит следующим образом:

Assembly a = Assembly.ReflectionOnlyLoad(_toolBytecode);
        foreach (Type t in a.GetTypes())
        {
            if (typeof(BoardTool).IsAssignableFrom(t))
            {
                if (t.IsSubclassOf(typeof(NetworkTool)))
                {
                    // Loop through each attribute of the class
                    foreach (object attr in t.GetCustomAttributes(false))
                        // Check if the attribute is the one we want
                        if (attr is NetworkToolIDAttribute)
                        {
                            ReflectedTool rt = new ReflectedTool();
                            rt.ToolID = ((NetworkToolIDAttribute)attr).ToolID;
                            rt.ToolName = t.Name;
                            _tools.Add(rt);
                        }
                }
                else
                {
                    ReflectedTool rt = new ReflectedTool();
                    rt.ToolID = Guid.Empty;
                    rt.ToolName = t.Name;
                    _tools.Add(rt);
                }
            }
        }

Любая помощь будет признательна, или, если вы знаете другой способ сделать это, это тоже было бы здорово. Если все остальное не поможет, я, вероятно, в конечном итоге напишу средство запуска / контейнер песочницы как быстрое приложение Silverlight.

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

Ответы [ 2 ]

0 голосов
/ 01 октября 2009

Настоящая проблема здесь не в другом CLR, а в другом наборе базовых библиотек (mscorlib, system и т. Д.). Так что на рабочем столе вы просто не можете его открыть. Возможно, вы захотите найти библиотеку исправлений, которая не зависит от LoadLibrary. Я знаю, что Reflector делает что-то подобное. Но я не знаю, доступен ли какой-либо из этого кода.

0 голосов
/ 01 октября 2009

Silverlight - это CLR, отличный от .NET, поэтому сборки не совместимы. «Система», «mscorlib» и т. Д., Используемые Silverlight, не совпадают с теми, которые используются в ASP.NET. Формат IL такой же, как AFAIK, поэтому он немного задан в начале сборки плюс ссылки на разные сборки, так что вы можете напрямую пройти через IL, но все в классе Assembly вызовет проблемы.

...