2010-03-17 77 views
7

在Visual Studio 2008项目属性“应用程序”选项卡中,我可以将输出类型设置为Windows应用程序,控制台应用程序或类库。我有一个我想要构建的项目作为独立工具(控制台应用程序)可供我正在作为类库使用的其他工具使用。Visual Studio项目构建为可执行文件和DLL

VS GUI只允许我选择其中之一,并且始终构建proj两次是不方便的。

如何设置它在单个构建作业中构建两种输出类型?我写一些自定义的MSBuild .targets文件或什么?

+0

相关问题优先考虑测试我的工具;如果我使用Visual Studio的“创建单元测试”来生成测试项目,则会根据当时是否将主项目设置为控制台应用程序或类别库而有所不同,这会稍微变得不同*,以便将主项目切换回来&将会交替地中断测试项目的构建。瘸。 – 2010-03-17 23:00:30

回答

18

如果我没有弄错,可以使用EXE作为类库。
只需在其他项目中添加对其的引用即可。 .NET EXE只是一个程序集。

3

创建两个单独的项目,一个用于控制台应用程序,另一个用于类库。为每个设置适当的输出类型。

不要忘记将您的类库的引用添加到控制台应用程序项目中。

3

您无法编译为exe和dll。程序集是否被视为exe或dll由文件的可移植可执行文件头中的单个位标志确定(有关更多信息,请参阅http://msdn.microsoft.com/en-us/magazine/cc301805.aspx)。该标志不能同时具有两个值。

你可以做什么来满足你的需要是添加一个对你的exe的参考。您不能在某些版本的Visual Studio(2005及更低版本)中执行此操作,因为UI不会让您执行此操作,但您可以手动编辑项目文件以添加参考。 Visual Studio的更高版本允许您使用UI添加对exe文件的引用。

+1

该位标志意味着单个*文件*不能同时是DLL和.exe,这很明显。但是.NET构建不能有多个构建目标?这听起来很腥,如果这是真的,它会是MSBuild的一个巨大局限(所以也许我需要学习NAnt ...) – 2010-03-18 20:08:13

4

您可以默认构建dll,并制作另一个依赖目标,它只是使用dll的包装控制台应用程序。

3

我认为最简单的解决方案是构建为一个EXE,然后有一个后期构建操作,将EXE复制到一个DLL中。这两者在.Net中没有真正的区别。

相关问题