Разблокировка DLL на машине компании. Как?
Я пытаюсь проверить MVVMLight, но библиотеки DLL, которые идут с ним, заблокированы. Я прочитал об этом, и мне сказали нажать UNBLOCK в свойстве файла... но это не существует для меня.. Затем я нашел из программы под названием STREAMS, которая должна разблокировать..., которая не работает... любой Другая идея, как это исправить?
Ошибка 7
Не удалось загрузить файл сборки:///C:\MIX10-MVVM-Samples\Mix10.MvvmDemo2 - End\Mix10.MvvmDemo2\Bin\Debug\GalaSoft.MvvmLight.Extras.SL4.dll
, Эта сборка может быть загружена из Интернета. Если сборка была загружена из Интернета, Windows помечает ее как веб-файл, даже если он находится на локальном компьютере. Это может помешать его использованию в вашем проекте. Вы можете изменить это обозначение, изменив свойства файла. Разблокируйте только те сборки, которым вы доверяете. См. http://go.microsoft.com/fwlink/?LinkId=179545 для получения дополнительной информации. Mix10.MvvmDemo2
6 ответов
Файл содержит альтернативный поток данных, который указывает, что контент был получен из Интернета и не является безопасным. Это особенность файловой системы NTFS, которая, к сожалению, хорошо спрятана, потому что Explorer не поддерживает отображение их содержимого. Вы можете увидеть их из командной строки с опцией команды DIR /R. И введите их содержимое с именем файла TYPE:streamname. И удалите их, удалив имя файла: streamname
Другой прием заключается в том, чтобы скопировать файл в файловую систему, которая не поддерживает альтернативные потоки данных, которая выделяет их из файла. Флешка например. Или утилита почтового индекса.
Более поздние версии Windows, я думаю, начиная с Win7, имеют встроенную поддержку для этого в Explorer. Щелкните правой кнопкой мыши файл, Свойства и нажмите "Разблокировать".
SysInternals имеет замечательную утилиту командной строки под названием Streams. Это оказалось очень полезным для меня.
Streams v1.56 - перечисление альтернативных потоков данных NTFS Copyright (C) 1999-2007 Марк Руссинович Sysinternals - www.sysinternals.com
использование: streams [-s] [-d] <файл или каталог>
-s Recurse подкаталоги
-d Удалить потоки
Выполните следующую команду в каталоге, из которого вы хотите удалить потоки (тот же эффект, что и при копировании на диск USB/FAT32)
streams.exe -d -s *.*
Сначала разблокируйте zip-файл, а затем извлеките DLL. На самом деле это то, что они учат делать здесь.
Только для общего понимания. 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 для получения дополнительной информации.
Я просто открыл файл dll в notepad++ и сохранил его под другим именем.
Если это кому-нибудь поможет, я вытащил две заблокированные DLL из TFS.
Мое решение:
- Внутри Windows Explorer удалите две заблокированные библиотеки DLL.
- Внутри TFS выполните операцию "Определить конкретную версию" для папки и убедитесь, что установлен флажок "Перезаписать все файлы, даже если локальная версия соответствует указанной версии", чтобы вы открывали свежие копии удаленных библиотек DLL.
- Восстановите ваше решение.