我在Visual Studio中有一些代码,如果项目的Output Type
是Windows Application
,我希望将其编译。如果类型为Class Library
,我希望它被忽略。
我这样做的主要原因是包含/排除此
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 form = new Form1();
Application.Run(form);
}
...还有一些关于在另一个类文件中关闭表单的逻辑,以便关闭表单关闭应用程序,而如果它是类库,则不会。
我只希望包含Main()
,如果是Windows应用程序则显示表单,否则不会。
答案 0 :(得分:3)
这样做没有意义。当程序集构建为EXE项目时,Main()方法才会运行。如果它是作为一个类库构建的,那么它只是一个未使用的方法,没有人会打电话,也永远不会被jitted。因此,将构建复杂化以消除它是没有意义的。
如果你真的,真的想要这样做,那么你将不得不使用条件编译符号。 Project + Properties,Build选项卡,条件编译符号设置。并且代码中为#if。
另请注意,即使构建为类库也是不必要的。作为EXE项目构建的程序集与类库一样有效。只需添加参考。在EXE和DLL程序集之间没有真正的区别是一个非常好的.NET好东西。在具有EXE项目和类库的常规解决方案中可以看到这种方法的一种方法是将类库DLL重命名为EXE。请注意该程序仍然有效。