Как видно из заголовка, я получаю исключение FileNotFoundException при запуске веб-страницы (проект ASP.NET MVC 2), которая ссылается на библиотеку классов Silverlight. Когда вызывается метод одного из классов из библиотеки Silverlight, я получаю следующую ошибку:
Не удалось загрузить файл или сборку 'System.Xml.Linq, версия = 2.0.5.0, культура = нейтральная, PublicKeyToken = 31bf3856ad364e35' или одна из ее зависимостей. Система не может найти указанный файл.
Хорошо, немного пояснений по поводу моей настройки. У меня есть три проекта; одна - это библиотека классов Silverlight (использующая Silverlight 4), а другая - веб-проект ASP.NET MVC 2 и проект Silverlight, имеющий элемент управления Silverlight, размещенный в веб-проекте. Я ссылался на библиотеку Silverlight в веб-проекте и проекте Silverlight (с элементом управления). Внутри элемента управления SL я создаю экземпляр класса из библиотеки SL и вызываю один из методов класса. Этот метод содержит обращения к классам библиотеки System.Xml.Linq. FileNotFoundException возникает при вызове этого метода, но не при создании экземпляра класса.
Из-за характера этого проекта я не могу вложить какой-либо код, который я использую, но вот некоторый произвольный код, чтобы проиллюстрировать вышеприведенное объяснение:
Класс в библиотеке Silverlight
public class XmlClass
{
public void Execute()
{
// Calls to System.Xml.Linq classes
}
}
Управление Silverlight
public class SLControl : UserControl
{
// ...
private void SomeObject_SomeEvent(object sender, EventArgs e)
{
// Instantiate class
XmlClass xmlClass = new XmlClass();
// Execute
xmlClass.Execute(); // <-- Error occurs here.
}
}
Теперь еще более странная вещь; У меня была эта ошибка в другой точке проекта. В этом другом у меня была стандартная библиотека классов .NET, ссылающаяся на библиотеку SL и использующая те же вызовы, что и элемент управления SL. Я обнаружил ошибку в том же месте и выяснил, что при запуске кода он пытался найти в GAC соответствующую сборку System.Xml.Linq. Поэтому я установил его в GAC, и это устранило мою проблему.
Итак, я немного растерялся, поскольку сборка все еще находится в GAC, и проект, в котором изначально возникла проблема, все еще работает.
Есть идеи по этому поводу?