C# WPF和控制台应用程序在同一解决方案中

C# WPF和控制台应用程序在同一解决方案中,c#,wpf,project,console-application,installshield,C#,Wpf,Project,Console Application,Installshield,我有一个WPF应用程序,将安装在多台客户端PC上。我正在使用InstallShield Express Edition作为部署工具 我创建了一个不同的项目(DLL)来跟踪软件安装。基本上是一个独立的C 35;项目,它在Windows注册表中读取、写入和执行一些验证检查,并且可以集成到其他WPF应用程序中(此项目/DLL将对其他应用程序有用) 我要做的是创建一个.EXE文件来注册安装。这个.EXE不在主WPF应用程序中使用,而是使用我刚才提到的.DLL 我通过使用单个控制台应用程序项目创建一个不同

我有一个WPF应用程序,将安装在多台客户端PC上。我正在使用InstallShield Express Edition作为部署工具

我创建了一个不同的项目(DLL)来跟踪软件安装。基本上是一个独立的C 35;项目,它在Windows注册表中读取、写入和执行一些验证检查,并且可以集成到其他WPF应用程序中(此项目/DLL将对其他应用程序有用)

我要做的是创建一个
.EXE
文件来注册安装。这个
.EXE
不在主WPF应用程序中使用,而是使用我刚才提到的
.DLL

我通过使用单个控制台应用程序项目创建一个不同的解决方案,并引用必要的DLL,成功地做到了这一点。 但我真正想要的是在我的主应用程序解决方案中将其创建为项目,当我这样做时,除了主应用程序可执行文件之外,不会生成任何
.EXE
文件

我可以做些什么来获取2
.EXE
文件(主应用程序和
安装注册
),还是我目前使用的方法是唯一的方法

这与其说是个问题,不如说是个麻烦,但还是。。。在我开发的所有不同应用程序中,这将是跟踪这个小模块的更好方法


谢谢

您是说Console EXE不是作为解决方案构建/运行的一部分创建的吗

或者控制台EXE不是作为InstallShield部署项目的一部分创建的

如果您将生成控制台EXE作为解决方案生成/运行的一部分:

通常,当您点击F5时,VisualStudio只生成您指定为启动的项目及其依赖项

您必须显式构建该控制台应用程序或整个解决方案


如果您希望每次点击F5时都能构建它,您可以将其指定为启动项目之一;或者将其指定为MainApp项目的依赖项(这有点骗人,但它完成了任务)。

在尝试了几种不同的方法后,我达到了这个目的!!!片刻

发生的情况是,VS正在为主应用程序和控制台应用程序创建.EXE文件,但每个文件都位于各自的调试/发布文件夹中

例如:

主应用->C:\Projects\MyApp\MyAppUI\bin\Debug\MyAppUI.exe

安装控制.EXE->C:\Projects\MyApp\InstControl\bin\Debug\InstControl.EXE

注意:C:\Projects\MyApp是解决方案文件夹

这有点道理,他们在自己的文件夹,但另一方面,应该有一个选项在VS中选择我们要发送所有解决方案的.EXE


希望它对将来的人有所帮助。

默认情况下,所有中间编译工件都放在解决方案中给定项目下的obj文件夹中(到目前为止,我还不知道这是可以更改的)

对于项目输出,根据您的构建配置,默认情况下,它们被置于bin\Debug或bin\Release下

但是,这可以从项目的属性进行更改;具体来说,“生成”选项卡有一个“输出路径”选项供您指定生成输出位置

这必须基于每个项目进行,但我通常会在解决方案根目录下创建一个SolutionDir\bin文件夹,并根据具体情况将所有项目输出路径指向SolutionDir\bin\Debug或SolutionDir\bin\Release。通过避免项目之间具有复杂相互依赖关系的大型解决方案中输出程序集的多个副本,这增加了优势或减少了SolutionDir的总大小


这有帮助吗?

您使用什么构建解决方案?VS在构建不同的项目时不应该有问题,每个项目都有自己的可执行文件。。。只有通过阅读你的答案才能达到目的。这让我想到检查应用程序文件夹上的调试文件夹。谢谢。。。确实如此。在第二个输出文件夹上创建了大量重复的.DLL。我所需要的就是我的.EXE。这样可以防止产生所有额外的“垃圾”。多亏了LOT,您实际上可以从项目属性设置生成输出路径。我通常在解决方案根目录下的相同文件夹中转储所有dll和exe。例如,$(SolutionDir)\bin\Debug或$(SolutionDir)\bin\Release