可以创建输出类型为"无"的Visual Studio项目吗?

Sco*_*ger 6 projects-and-solutions visual-studio

我正在使用Visual Studio 2008,并希望创建一种容器项目,该项目包含许多必须与解决方案一起安装的DLL.我希望它们在一个单独的项目中,以便它们可以作为一个组轻松地附加到解决方案中.

我创建了一个空的项目调用TEST,使用"内容"的构建操作将我的DLL添加到它,并将它们设置为"始终复制".这一切都完全符合我的要求.问题是如果我将TEST项目输出类型设置为"控制台应用程序"或"Windows应用程序",它将不会构建,因为没有入口点.如果我将输出类型设置为"类库",它会构建,但我最终得到一个我不想要的额外TEST.DLL文件.

无论如何都要将输出类型设置为"无"?我希望构建操作发生(所以我的DLL被复制)但我不希望创建虚拟类程序集.有任何想法吗?

谢谢!

sta*_*ica 5

以下逐步指南的假设:

假设您有两个项目的解决方案:

  • Main:您的主要(启动)项目.
  • BundledDLLs:一个库项目,其中包含.dll应该在主项目的输出目录中结束的s.

分步指南:

在Visual Studio中实现目标的最简单方法可能如下:

  1. 添加所有.dlls BundledDLLs并将其Copy to output目录设置Copy for newer.

    这在Project ExplorerProperties窗口中完成.

  2. 配置BundledDLLs的输出目录与输出目录相同Main.

    这可以在" 项目属性"页面的" 构建"选项卡中完成.在" 输出路径"文本框中输入以下内容:BundledDLL

    ..\Main\bin\Debug
    
    Run Code Online (Sandbox Code Playgroud)
  3. 设置BundledDLLs为依赖关系Main.

    不要像通常那样添加BundledDLLs项目引用Main; 相反,使用Project Dependencies对话框.这将告诉构建工具无论何时Main构建,都BundledDLLs需要首先构建.

    通过右键单击Main项目节点以打开上下文菜单来执行此操作; 从那里选择Project dependencies ... 在现在打开的对话框中,首先Main从下拉列表中选择; 然后检查BundledDLLs下面的项目列表.BundledDLLs现在注册为依赖Main.

    PS:没有明确的汇编引用的一个缺点Main是某些工具可能无法识别依赖项.例如,ClickOnce部署可能无法正常工作.

  4. 添加一个post-build事件BundledDLLs,删除多余的事件BundledDLLs.dll.

    正如您所说,您不希望也不需要BundledDLLs构建时生成的虚拟输出.因此,添加一个post-build事件,只需.dll在创建后删除它.

    在" 项目属性"页面中打开" 构建事件"选项卡,然后在构建后的文本框中输入以下内容:BundledDLLs

    DEL "$(TargetDir)\$(TargetName).*"
    
    Run Code Online (Sandbox Code Playgroud)

    (如果你想知道:你为什么不将此项目添加作为项目引用的原因Main更早,因为如果你这样做了,Main要寻找BundledDLLs.dll,它也无法找到,因为你实际上并不想要生成这样的文件.)

    PS:添加这样的构建后步骤的一个缺点是它可能会干扰增量构建.如果您的项目在此之后不断从头开始重新编译,那么最好不要删除构建后的步骤并BundledDLLs.dll在解决方案的输出目录中使用额外的内容.