0

我有一个执行一些任务的窗口应用程序,其中之一是打开一些文件,我们都知道.net 为应用程序提供了 exe 文件,可以用作单击开始。我称这个应用程序为 application1。

现在我想再生成一个窗口应用程序(简单的 exe),我们称它为 application2,它将打开一个带有一些选项的表单(比如 application1 要打开的文件的名称)和一个生成按钮。

单击生成按钮时,它应该使用从 application2 传递的数据为 application1 生成 exe 文件。

请建议我该怎么做。

编辑 我需要生成可在不同系统上使用的 exe,这些系统将定期执行某些任务。并且不同计算机的间隔colud是不同的。所以我被要求生成哪个将接受时间间隔并将生成该间隔的 exe

4

3 回答 3

1

有多种方法可以考虑这样做:

  1. 使用带有设置文件名称的 reg 键来读入,然后将您从 app2 写入的设置存储在文件中,用于 app1,以便 app 1 可以运行它

  2. 您使用带有文件名或命令行参数的参数调用 app1,它会更新自己的应用程序设置文件。

  3. 将设置放入数据库中,因此任何地方的 app1 的任何副本都可以找到它,假设所有用户都能够看到数据库服务器

  4. 如果 app1 总是在运行,而 app2 是你可以进行一些进程间通信,但可能这是 4 中更复杂的

与其重新编译exe,不如拥有一个配置文件。

如果做不到这一点,编译.net只是这样,你可以有一个生成一个.cs文件的exe(或更新一个,并重新运行整个编译并输出一个exe..在命令行编译时使用谷歌)但我不会我的选择。

于 2012-07-04T15:05:59.390 回答
0

我认为您正在寻找的是 application1 能够接收命令行参数和 application2 以允许您选择文件并运行 application1 并传递这些参数。

我不认为它希望生成.exe

于 2012-07-04T15:01:17.553 回答
0

另一种方法,虽然不是那么容易,将是

  • 编写应用程序 1 以尝试通过反射从不存在的类中读取设置SettingsOverride;如果没有找到,回退到它自己的硬编码设置
  • 应用程序 2 使用CodeDOM或类似方法创建一个新程序集,为SettingsOverride类提供新保存的设置
  • 应用程序 2 使用ILMerge从应用程序 1 和设置程序集构建新的 .exe;应用程序 1 中的反射代码现在应该选择新设置。

可能也可以使用嵌入式资源来执行此操作,尽管我不确定如何。最后,您可以在 .exe 中放置一个字符串常量,例如 400 个X字符,然后应用程序 2 可以扫描文件以找到它(作为 Unicode/UTF-16 文本)并将其替换为包含新设置的字符串 - 但我如果您需要重新计算校验和或类似内容,则 m 不是 100%。

于 2012-07-04T15:14:31.523 回答