【问题标题】:Why am I able to debug my assembly?为什么我能够调试我的程序集?
【发布时间】:2010-09-05 14:21:00
【问题描述】:

我正在开发一个处理各种颜色转换的程序集。当我将程序集加载到新项目中进行测试时,如果程序集中出现错误,Visual Studio 会从 DLL 中打开有问题的代码。我可以单步执行程序集中的所有代码。

我绝对不希望代码如此容易可见/可用。我希望代码在程序集中有点“锁定”。

如何将 DLL 设置为简单地抛出某种错误而不是打开?

编辑

我对“安全”的代码不感兴趣,也不需要混淆。该库正在内部使用,代码本身完全可以访问。我不希望使用该库的人发现自己突然调试程序集。如果出现问题,我更愿意抛出错误,而不是在 Visual Studio 中打开汇编代码。

【问题讨论】:

  • 这很简单:不要将源代码文件与您的 DLL 一起提供。
  • 共享代码有什么问题? :(
  • 共享代码没有错。在这种特殊情况下,我想保持代码的私密性。

标签: c# .net dll


【解决方案1】:

发生这种情况是因为您在计算机上安装了 VS,并且因为您正在部署 PDB 文件 - 如果未安装 VS,您将不会看到此对话框。

另外:

  • 不要部署在Debug 配置中构建的代码。其中包含有助于调试的附加信息。
  • 确保不使用可执行文件部署 PDB 文件。同上,运行代码不需要它们。

这些都会有所帮助,但任何程序集都可以使用反射器轻松反编译,因此您可能还想研究混淆器以阻止其他程序员轻松看到您的代码。

【讨论】:

  • 谢谢。我现在试试这个。我当然不会试图混淆我的代码,因为我知道它很容易被反编译。但是,我试图让使用该库的人保持干净整洁,并且没有必要让任何人打开 DLL(除非这是他们的主要意图。)
【解决方案2】:

这里有一个 C# 混淆器列表:http://www.csharp411.com/net-obfuscators/

【讨论】:

    【解决方案3】:

    您需要对二进制文件进行模糊处理。

    【讨论】:

      【解决方案4】:

      基本上,如果您希望您的代码是安全的并且您不希望您的类暴露给其他人,那么您肯定需要混淆您的代码。

      要混淆您的代码,您可以使用 DotFuscator,它包含在 Visual Studio 安装中。

      查看我的文章。 http://www.codeproject.com/KB/dotnet/code_security.aspx

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-07-02
        • 2023-03-09
        • 2012-10-09
        • 1970-01-01
        • 2015-06-07
        • 2015-04-27
        • 1970-01-01
        相关资源
        最近更新 更多