18

我正在尝试测试 MVVMLight,但它附带的 DLL 已被阻止。我已经阅读过它,并被告知要单击文件属性中的 UNBLOCK ..但这对我来说不存在..然后我发现了一个名为 STREAMS 的程序,它应该可以解除阻止..这不起作用...任何其他想法如何解决这个问题?

错误 7

无法加载程序集文件:///C:\MIX10-MVVM-Samples\Mix10.MvvmDemo2 - End\Mix10.MvvmDemo2\Bin\Debug\GalaSoft.MvvmLight.Extras.SL4.dll

. 此程序集可能已从 Web 下载。如果程序集是从 Web 下载的,Windows 会将其标记为 Web 文件,即使它驻留在本地计算机上也是如此。这可能会阻止它在您的项目中使用。您可以通过更改文件属性来更改此名称。仅取消阻止您信任的程序集。有关详细信息,请参阅http://go.microsoft.com/fwlink/?LinkId=179545。Mix10.MvvmDemo2

4

6 回答 6

22

该文件包含一个备用数据流,表明该内容是从 Internet 检索的并且不安全。这是 NTFS 文件系统的一项功能,不幸的是,由于资源管理器不支持显示其内容,该功能被很好地隐藏了。您可以使用 DIR /R 命令选项从命令提示符中查看它们。并使用 TYPE filename:streamname 键入它们的内容。并使用 DELETE filename:streamname 删除它们

其他技巧是将文件复制到不支持备用数据流的文件系统,将它们从文件中分割出来。以闪存驱动器为例。或 zip 实用程序。

我认为从 Win7 开始的更高版本的 Windows 在资源管理器中内置了对此的支持。右键单击文件,属性,然后单击“取消阻止”。

于 2010-06-18T19:25:10.087 回答
17

SysInternals 有一个很棒的命令行实用程序,称为Streams。这对我来说非常有用。

Streams v1.56 - 枚举备用 NTFS 数据流 版权所有 (C) 1999-2007 Mark Russinovich Sysinternals - www.sysinternals.com

用法:流 [-s] [-d] <文件或目录>
-s 递归子目录
-d 删除流

在要从中删除流的目录中执行以下命令(与复制到 USB/FAT32 驱动器的效果相同

streams.exe -d -s *.*

于 2011-07-12T08:08:26.580 回答
11

仅供一般理解。NTFS 支持流(请参阅http://msdn.microsoft.com/en-us/library/aa364404%28VS.85%29.aspx)。流的全名是filename:stream_name:stream_type。因此,人们可以很容易地在附加的文件流中写入一些关于文件的附加信息。如果您从 Internet Explorer 下载文件,请在流中写入一些简单的信息,名称为Zone.Identifier. 如果您有从 Internet 下载的文件 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了解更多详细信息

于 2010-06-18T19:31:40.143 回答
11

先解封zip文件,然后解压dll。实际上,这就是他们在这里指示要做的。

于 2010-06-18T19:03:01.313 回答
2

我只是在 notepad++ 中打开了 dll 文件并用不同的名称保存它。

于 2010-08-13T06:34:24.177 回答
0

如果它对任何人有帮助,我从 TFS 中删除了两个被阻止的 DLL。

我的解决方案:

  • 在 Windows 资源管理器中,删除两个被阻止的 DLL。
  • 在 TFS 内部,对文件夹执行“获取特定版本”操作,并确保选中“即使本地版本与指定版本匹配也覆盖所有文件”,以便您将下拉已删除 DLL 的新副本。
  • 重建您的解决方案。
于 2014-01-02T20:37:29.620 回答