我构建了一个Windows应用程序作为POS系统,我想添加一个让用户在windows中添加新按钮的功能。因此,在用户输入信息(例如项目名称和价格)之后,应用程序将生成代码以创建新按钮并将代码添加到MainForm.cs和MainForm.Designer.cs中。
但是,在我停止应用程序并重新运行已编译的exe之前,源代码的更改才会生效。是否可以在应用程序仍在运行时使应用程序重建? (即,用户可以在他/她输入信息后立即看到新按钮显示在窗口上)
我尝试过使用Application.Restart();和this.Refresh();,但它没有用。
答案 0 :(得分:6)
你没有在这里使用正确的方法。
您不应该根据用户输入修改应用程序的代码 而是将用户输入的数据保存在数据库或文件中,并使用此信息动态显示按钮。
答案 1 :(得分:0)
我认为这是可能的......但是有一些限制。 您可以创建AppDomain并加载DLL代码(此dll包含您的申请表)。 然后,您卸载应用程序域,构建DLL并重新创建一个新的AppDomain。
当然,您必须关闭您所在的窗口,并且DLL体系结构与简单的WinForms应用程序完全不同。
这是我建议自动更新的东西,例如
答案 2 :(得分:0)
总之,没有 - 因为重建应用程序会替换其在磁盘上的可执行映像文件,该文件通常由正在运行的进程锁定。
Visual Studio和其他IDE支持"编辑并继续"它允许在程序在断点处等待时在运行时替换代码,但仅限于有限数量的情况(例如修改现有方法中的代码)。它不够灵活,无法进行批发功能或GUI更改(如果您使用XAML资源,则很难实现)。
如果您希望获得所需的灵活性,那么您必须深入研究支持这些的老式大型机系统(例如IBM Z系列)各种功能。