Azure ссылается на неверную DLL - PullRequest
0 голосов
/ 06 февраля 2012

Это в некотором роде продолжение: Ссылочная альтернатива ссылочной сборке в Visual Studio 2010?

Я имею в виду альтернативную версию библиотеки DLL базового фреймворка.Visual Studio (и локальная фабрика отладчика) не имеют проблем со ссылкой на этот файл.Кроме того, файл помечен Copy Local.Однако при развертывании в облаке я получаю:

Не удалось загрузить файл или сборку (строгое имя сборки) или одну из ее зависимостей.Определение манифеста обнаруженной сборки не соответствует ссылке на сборку.

Используя удаленный рабочий стол, я определил, что правильный файл действительно находится в папке E:\approot вместе с моими другими зависимостями.Я предполагаю, что матрица ищет в GAC вместо использования моих файлов.

Есть ли способ заставить его использовать мою DLL сначала?

Примечание: Вся концепция замены .NET CLR DLL в любом случае является огромным хаком, так что хаки приветствуются.Когда выйдет .NET 4.5 с поддержкой нужной мне функции, все это будет удалено.

Дополнительная информация: Похоже, что моя веб-роль работает нормально, но моя рабочая роль умирает с этой ошибкой, когда она пытается создать моюАвтофак контейнер.Это происходит, даже если я явно загружаю сборку перед сборкой, что также работает нормально.

Ответы [ 4 ]

1 голос
/ 06 февраля 2012

Не могли бы вы попытаться указать подсказку CLR, которая будет сначала проверять локальную папку:

<runtime> 
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
  <probing privatePath="." /> 
</assemblyBinding> 
</runtime>

Дополнительные сведения см. В разделе «Поиск сборки в разделе зондирования» здесь .Это может помочь.

1 голос
/ 06 февраля 2012

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

1 голос
/ 06 февраля 2012

Вы можете запустить журнал Fusion, чтобы увидеть, откуда он загружается. Вам может потребоваться создать файл .config для процесса, если что-то еще выполняется, и сначала загружает этот файл. Вы можете сделать что-нибудь экзотическое, например, создать новый домен приложения и загрузить туда свою сборку, что-то вроде того, что это делает для динамических сборок:

http://blogs.msdn.com/b/tom/archive/2007/12/05/dynamic-assemblies-and-what-to-do-about-them.aspx

0 голосов
/ 06 февраля 2012

Я видел эту проблему, если один из проектов не имеет целевой версии .NET Framework. Возможно, убедитесь, что все проекты в решении имеют одинаковые настройки.

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