调试和发布模式之间不同的c#dll加载行为

时间:2017-02-03 13:33:06

标签: .net winforms debugging dll release

我创建了一个winform c#程序来演示这个问题。它是一个Visual Studio项目,带有对MySql.Data.dll的引用:

Form1.cs的

namespace DynamicLoadingTest
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            int i = 9;
            if (i == 10)
            {
                System.Data.Common.DbCommand cmd = MySQLInterface.GetMySQLCommand();
            }
        }
    }
    public class MySQLInterface
    {
        public static System.Data.Common.DbCommand GetMySQLCommand()
        {
            return new MySql.Data.MySqlClient.MySqlCommand();
        }
    }
}

Program.cs的

namespace DynamicLoadingTest
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }
}

Form1.cs的设计器文件没有任何特殊内容,只是vs2015的默认模板。

我们正在使用Mark Russinovich的Process Explorer来分析执行的文件:

  • 在调试模式下,MySql.Data.dll不是执行文件的一部分
  • 在发布模式下,已加载MySql.Data.dll

为什么?

0 个答案:

没有答案