【问题标题】:Unblocking a DLL on a company machine. How?解锁公司机器上的 DLL。如何?
【发布时间】:2011-03-05 13:57:19
【问题描述】:

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

错误 7

无法加载程序集 file:///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

【问题讨论】:

标签: visual-studio dll mvvm-light


【解决方案1】:

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

【讨论】:

  • 但是 ezip 文件上也没有选项可以在属性中“取消阻止”....我不知道为什么我错过了这件作品..我只能猜测它有一些东西与公司的安全有关?
  • 我也有同样的问题。取消阻止按钮不会出现在属性对话框中。这可能是应用于公司计算机的安全策略。
【解决方案2】:

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

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

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

【讨论】:

  • 所以你是说如果我只是将被阻止的 .dll 复制到闪存驱动器然后将它们复制回来,它们将被解除阻止?我试试看。
  • @punkouter。当然,如果您将文件复制到另一个不支持 NTFS 的驱动器,则所有额外的流都将被删除,并且您将拥有未阻止的文件。
  • 好吧.. 似乎有效!讨厌这个功能! (或安全限制我的机器)
  • 使用streams.exe -d -s *.* 自动删除给定目录的流。
  • 复制到另一个驱动器(网络上的共享驱动器)并压缩文件对我有用。
【解决方案3】:

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

【讨论】:

  • 我好像没有权限取消阻止。但我意识到 mvvmlight 是开源的,所以我想我至少可以自己编译它。
【解决方案4】:

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

【讨论】:

    【解决方案5】:

    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 *.*

    【讨论】:

      【解决方案6】:

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

      我的解决方案:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-01-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多