C#有没有办法我可以编译一个exe

时间:2019-07-17 15:43:23

标签: c# compilation runtime-compilation

当人们从GitHub下载我的项目时,我会在启动时启动安装指南,其中包含一个显示“启动连接字符串生成器”的按钮。

问题是GitHub上没有存储.exe,所以我必须在每个视频或教程中解释“打开连接字符串生成器解决方案>构建”,然后运行连接字符串生成器或单击“启动连接字符串生成器”按钮'。

如果有一种方法可以按需编译Connection String Builder项目,这将是我的理想解决方案。

我知道我可以将Connection String Builder项目中的表单移动到主项目(DataTier.Net)的内部,但是如果不需要,我不想这样做,因为我保留了捷径我的桌面连接字符串生成器。

ConnectionStringBuilder的文件夹位于工具文件夹中,该文件夹是主项目的子文件夹。

我一直在寻找Rosylyn方法来按需编译项目,但是通过谷歌搜索无法找到任何东西(我承认了两页后就放弃了)。如下面的代码示例所示,我知道如何检查.exe是否存在,如果.exe不存在,我希望能够像RosylnCompiler.Compile(pathToProject);这样。

string temp = "../../../Tools/ConnectionStringBuilder/ConnectionBuilder/bin/Debug/ConnectionBuilder.exe";
string path = Path.GetFullPath(temp);
if (File.Exists(path))
{
    string databaseName = ...;
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(path, databaseName);
    System.Diagnostics.Process.Start(startInfo);
}
else
{
    MessageBox.Show("Sorry we could not find DataTier.Net Connection String Builder.", "App Not Found", MessageBoxButtons.OK, MessageBoxIcon.Warning);
}

反正有这样做吗?如果不是这样,我可以将消息框更新为说明,或者如果需要的话可以将表单复制到主项目中,但是按需编译将是我的理想解决方案。

1 个答案:

答案 0 :(得分:0)

假设没有错误,Visual Studio将确保在以下情况下生成当前构建配置中的所有项目:1)执行Build Solution命令或2)启动当前构建配置(例如,{ {1}}或Start Debugging命令被执行)。另外,假设没有错误,则执行Start Without Debugging命令时,Visual Studio将以当前的生成配置生成所有项目。

因此,通过将Connection String Builder应用程序的项目包含在为解决方案定义的所有构建配置中,您应该能够确保将其构建。

有关构建配置的更多信息,请参见Understand build configurations

此外,除非您只有Debug配置,否则您不应假定已构建Connection String Builder应用程序的Debug版本(即,问题中的Rebuild Solution)。如果您的解决方案仅定义了默认的Debug和Release构建配置,则可以按照以下步骤确定正确的路径:

../../../Tools/ConnectionStringBuilder/ConnectionBuilder/bin/Debug/ConnectionBuilder.exe