我可以反映.NET基类库(BCL)吗?

时间:2008-12-18 17:03:30

标签: .net

BCL

具体来说,我这样打破了EULA吗?

7 个答案:

答案 0 :(得分:16)

为什么要使用反射器呢? Just look at the original source code

经过更多的研究,我发现.NET Framework与安装它的操作系统属于同一个EULA,你可以通过运行以下命令并选择正确的一个来找到几个额外的术语。你的语言(1033是英文)。

where /R "%WINDIR%\Microsoft.NET" eula*.*

因此,微软操作系统EULA明确表示不允许“反编译或反汇编”,并且在Reflector中查看代码可能被视为属于此类,从技术上看,看起来不合法。框架源代码通过Reflector。即使您可以查看原始代码......一个有趣的悖论。

答案 1 :(得分:4)

  

为什么要使用反射器呢?只需看看原始源代码!

但是,您应该提及查看源代码的注意事项。正如Frans Bouma写道:Don't look at the sourcecode of .NET licensed under the 'Reference license'。他引用了几个风险,这些风险都与暗示获取可能在编写自己的软件时可能带来问题的非自由知识有关。最严重的法律风险可能与非自愿专利侵权有关。此外,在查看类似的源代码之后,您还明确地禁止为某些其他项目(例如ReactOS(可能还有Mono))做出贡献。这可能在未来还包括.NET源代码。

答案 2 :(得分:2)

是的,你绝对可以。你也可以setup VS2008 to debug the BCL。考虑到Microsoft提供的工具如ildasm可以让你看到IL代码,我无法想象这是一个问题。

答案 3 :(得分:2)

更大的问题是......法律文件是否可以阻止您查看存储在您拥有的磁盘上的一系列字节,并为它们分配含义?任何法院都认为这样的文件可以执行是值得怀疑的。

(这与之后分发该信息的问题有些不同)。

答案 4 :(得分:1)

问题是您不使用http://referencesource.microsoft.com/的原因;如果您的许可协议很好,那么以这种方式访问​​BCL源代码要容易得多。

答案 5 :(得分:1)

根据您对许可证和IP法的鲁莽/知识,您可能认为无论.NET Framework EULA如何都可以使用Reflector,因为您可能认为禁止逆向工程是不可执行的(这是我的信念,但我知道什么?)。

以下是参考源代码中心(RSCC)博客对Reflector的评价:

  

The Difference between RSCC and .NET Reflector

     

.NET Reflector让您轻松实现   查看,导航和搜索   .NET程序集的类层次结构   即使你没有代码   他们。有了它,你可以反编译和   分析C#,Visual中的.NET程序集   基本和IL。

     

参考源代码中心,它是   在Visual Studio 2008中集成   为...启用丰富的调试方案   开发人员构建应用程序   微软平台的顶部。同   它,您可以快速轻松地访问   微软的平台源代码。

     

最重要的是什么   RSCC和.NET之间的差异   反射器?

     
      
  • RSCC只能显示我们的.NET Framework源代码   目前支持,.NET Reflector可以   使您能够查看反映的代码   任何.NET程序集

  •   
  • RSCC使您可以从内部调试和步入源代码   Visual Studio

  •   
  • 这两个工具都允许您查看C#中的.NET Framework源代码,但是   这是信息的差异   你是一名开发人员:[例子   消隐]

  •   

您可能不想使用RSCC源的一个原因是许可证禁止您使用它 如果您“从事设计,开发或测试其他软件,非Windows操作 系统,具有与软件相同或基本相同的特性或功能。“

因此,如果您参与Mono,您将不想使用RSCC。取决于你是多么小心/偏执 即使你只不过是Mono的用户,这可能也适用,因为这可能会被覆盖 通过'测试'。但是,我认为Mono开发人员可能也会小心,甚至不使用像Reflector那样的东西(老实说我不知道​​他们的政策是什么)。

答案 6 :(得分:1)

正如格雷格已经指出的那样,

   [OS EULA明确指出]不允许“反编译或反汇编”。

另一方面,Microsoft's own MSDN magazine写道:

  

[...]我认为最好使用.NET Reflector,它是检查.NET Framework程序集和方法。 [...]通过使用.NET Reflector,您可以看到Microsoft在编写DataSet的ReadXml方法时使用的内容,或者在从配置文件中读取数据时所执行的操作。 .NET Reflector也是查看创建HttpHandlers或配置处理程序等对象的最佳实践的绝佳方法,因为您可以了解Microsoft团队如何在框架中实际构建这些对象。

我不是律师,但我认为当他们推荐你打破它时,强制执行EULA会非常困难......