【问题标题】:Generate Winforms Project .exe programmatically from within a Winforms Application从 Winforms 应用程序中以编程方式生成 Winforms Project .exe
【发布时间】:2018-11-14 19:17:10
【问题描述】:

我需要构建一个容器 C# WinForm 应用程序,它将在按钮单击事件上吐出另一个 WinForm 应用程序的 .exe 文件。

例如:我有一个名为 ProjectA 的 Winform 应用程序,它接受一个启动参数。现在我有一个名为 ProjectB 的容器 WinForm 应用程序。我想通过在单击按钮时将所需参数传递给 ProjectA 应用程序以编程方式在 ProjectB 中生成 ProjectA.exe

在 Google 上找不到与此相关的任何内容。任何人都可以提供一些信息来实现这一目标。

请注意,这两个 Winforms 应用程序都必须用 C# 编写。

我有一个非常模糊的想法,即使用 MSBuild Command 来构建 ProjectA,然后生成它的 .exe 但是,我对此并不太清楚。

【问题讨论】:

  • 我只能为您指出正确的方向,就像我以前的雇主所做的那样。但是是的,您需要使用 MSBuild.exe。例如。 C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\MSBuild.exe。这接受解决方案位置、构建配置、平台等参数...
  • 感谢@Wheels73。你有任何关于它的参考资料或文件吗?到目前为止,我从未使用过 MSBuild。所以我对这整件事有点陌生。
  • 不,抱歉。正如我所说,这是一家老公司。我刚刚做了一个快速搜索。该主题已在本网站上介绍。试试stackoverflow.com/questions/7264682/…

标签: c# winforms build exe programmatically


【解决方案1】:

没有必要为此弄乱 MSBuild。您可以将程序代码生成为字符串,然后即时生成可执行文件:

https://support.microsoft.com/en-us/help/304655/how-to-programmatically-compile-code-using-c-compiler

【讨论】:

  • 如果我们谈论项目的可扩展性和维护,我认为这将产生巨大的影响。使用字符串进行调试也是一个问题。无论如何感谢您的回复。欣赏它。
【解决方案2】:

举个例子:

Process.Start(@"C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe", @"d:\app1\app1.sln");

另一个例子:

Process.Start(@"C:\Program Files (x86)\MSBuild\12.0\Bin\MSBuild.exe", @"d:\app1\app1.sln /t:Rebuild /p:Configuration=Debug;TargetFrameworkVersion=v4.0");

将上面的代码放在你的按钮点击上。

【讨论】:

  • 这听起来正是我想要的。我将尝试一次并将其标记为已接受的答案。非常感谢
  • 你能告诉我如何使用 MSbuild.exe 将参数传递给 app1.sln。谢谢
  • @Harshit Gandhi,如果您想了解有关 MSBuild 命令行参考的更多信息,请参阅 this link
猜你喜欢
  • 2012-09-21
  • 2011-02-24
  • 2012-07-08
  • 2011-02-01
  • 2012-05-12
  • 2010-09-08
  • 1970-01-01
  • 2010-11-11
  • 1970-01-01
相关资源
最近更新 更多