Разблокировка DLL на машине компании.Как? - PullRequest
18 голосов
/ 18 июня 2010

Я пытаюсь протестировать MVVMLight, но библиотеки DLL, поставляемые с ним, заблокированы. Я прочитал об этом, и мне сказали нажать UNBLOCK в свойстве файла ... но это не существует для меня .. Затем я нашел из программы под названием STREAMS, которая должна разблокировать ..., которая не работает ... любой Другая идея, как это исправить?

Ошибка 7

Не удалось загрузить сборку file: /// C: \ MIX10-MVVM-Samples \ Mix10.MvvmDemo2 - Конец \ Mix10.MvvmDemo2 \ Bin \ Debug \ GalaSoft.MvvmLight.Extras.SL4.dll

. Эта сборка может быть загружена из Интернета. Если сборка была загружена из Интернета, Windows помечает ее как веб-файл, даже если он находится на локальном компьютере. Это может помешать его использованию в вашем проекте. Вы можете изменить это обозначение, изменив свойства файла. Разблокируйте только те сборки, которым вы доверяете. См. http://go.microsoft.com/fwlink/?LinkId=179545 для получения дополнительной информации. Mix10.MvvmDemo2

Ответы [ 6 ]

22 голосов
/ 18 июня 2010

Файл содержит альтернативный поток данных, который указывает, что контент был получен из Интернета и не является безопасным.Это функция файловой системы NTFS, которая, к сожалению, хорошо спрятана, потому что Explorer не поддерживает отображение их содержимого.Вы можете увидеть их из командной строки с опцией команды DIR / R.И введите их содержимое с именем файла TYPE: streamname.И удалите их с помощью DELETE filename: streamname

Другие хитрости - скопировать файл в файловую систему, которая не поддерживает альтернативные потоки данных, которая выделяет их из файла.Флешка например.Или zip-утилита.

Более поздние версии Windows, я думаю, начиная с Win7, имеют встроенную поддержку для этого в Explorer.Щелкните правой кнопкой мыши файл, Свойства и нажмите «Разблокировать».

17 голосов
/ 12 июля 2011

SysInternals имеет замечательную утилиту командной строки, которая называется Streams .Это оказалось очень полезным для меня.

Streams v1.56 - Перечисление альтернативных потоков данных NTFS Copyright (C) 1999-2007 Марк Руссинович Sysinternals - www.sysinternals.com

использование:потоки [-s] [-d]
-s Подкаталоги Recurse
-d Удалить потоки

Выполнить следующую команду в каталоге, из которого вы хотите удалить потоки ( тот же эффект, что и при копировании на диск USB / FAT32 )

streams.exe -d -s *.*

10 голосов
/ 18 июня 2010

Только для общего понимания.NTFS поддерживает потоки (см. http://msdn.microsoft.com/en-us/library/aa364404%28VS.85%29.aspx). Полное имя потока: имя файла: имя_потока: тип_потока . Поэтому можно легко написать дополнительную информацию о файле в дополнительном потоке файла. Если выскачать файл из интернета. Internet Explorer записать в поток некоторую простую информацию с именем Zone.Identifier. Если у вас есть файл test.dll, загруженный из интернета, вы можете использовать

more < test.dll:Zone.Identifier

для просмотра информации изпоток. Вы увидите что-то вроде

[ZoneTransfer]
ZoneId=3

Разблокировка - это не больше, чем удаление этого потока. Я рекомендую прочитать http://weblogs.asp.net/dixin/archive/2009/03/14/understanding-the-internet-file-blocking-and-unblocking.aspx для получения дополнительной информации

10 голосов
/ 18 июня 2010

Сначала разблокируйте zip-файл, а затем извлеките DLL-файлы.На самом деле это то, что они учат делать здесь .

2 голосов
/ 13 августа 2010

Я просто открыл файл dll в notepad ++ и сохранил его под другим именем.

0 голосов
/ 03 января 2014

Если это кому-нибудь поможет, я вытащил две заблокированные DLL из TFS.

Мое решение:

  • Внутри Windows Explorer удалите две заблокированные DLL.
  • Внутри TFS выполните операцию «Определить версию» для папки и убедитесь, что установлен флажок «Перезаписать все файлы, даже если локальная версия совпадает с указанной версией», так что вы будете извлекать свежие копии удаленных библиотек DLL..
  • Перестройте свое решение.
...