ERROR: Cannot find outputs of project output group 'Content Files from Web (Active)'

ERROR: Cannot find outputs of project output group 'Content Files from Web (Active)'

我刚刚尝试在服务器上实现我们项目的自动构建,我使用 devenv 在 jenkins 上构建 vdproj 项目。当我在本地 vm 中使用 devenv 命令行时,一切都很好。 项目是用VS2017搭建的,也是用2017开发的

但是当我在服务器上使用相同的命令行时,事情变得很奇怪

devenv c:\jenkins\workspace\ABC\ABC.sln /Rebuild Release /Project WebInstaller\WebInstaller.vdproj /ProjectConfig Release

当我在服务器上运行验证vdproj项目时失败,错误消息显示:

------ Starting pre-build validation for project 'WebInstaller' ------

WARNING: All custom dialogs must precede the 'Installation Folder' dialog.

ERROR: Cannot find outputs of project output group 'Content Files from Web (Active)'. Either the group, its configuration, or its project may have been removed from the solution.

ERROR: Cannot find outputs of project output group 'Primary output from Web (Active)'. Either the group, its configuration, or its project may have been removed from the solution.

------ Pre-build validation for project 'WebInstaller' completed ------

只是不知道为什么会这样,我从 jenkins 下载相同的工作区并在本地构建,它工作正常。

有可能是我在构建解决方案时发现 Web 项目总是无法构建的线索。

devenv /Rebuild Release /Project Web\Web.csproj c:\jenkins\workspace\ABC\ABC.sln

消息显示在服务器上 运行 之后没有构建任何内容:

Microsoft Visual Studio 2017 Version 15.0.27004.2002.

Copyright (C) Microsoft Corp. All rights reserved.

========== Rebuild All: 0 succeeded, 0 failed, 0 skipped ==========

它不为 Web 项目构建任何内容。

有没有人遇到同样的问题或对此有任何想法?

我们的项目在 Visual Studio 2015 年遇到了同样的问题。

构建服务器:Windows 10 Pro,构建 1607。 CI 代理人:CruiseControl.NET。 VS:Visual Studio Pro,带有 VS 安装程序项目扩展的更新 3。 IIS: 未安装。

当使用 CC.NET 中的任务构建时,问题出现在包含程序集项目、WinForms 项目、Web 项目和安装项目的解决方案文件中。在 CI 服务器(和所有开发人员机器)上的 IDE 中,项目构建没有失败。

'Diagnostic' 构建日志的检查没有提供关于为什么跳过这个项目的信息。

[需要 Devenv(而不是 MSBuild)来构建安装项目。我们没有没有安装项目的混合解决方案,所以不清楚这个问题是否会在使用 MSBuild 任务时出现。]

在对此感到非常沮丧并确定使用新创建的各种类型的空项目制作的测试解决方案可以正确构建之后,我们比较了解决方案和项目文件。

长话短说,在 Web 项目中将 <UseIIS> 标记设置为 'True' 似乎可以解决我们环境中的问题。

  <ProjectExtensions>
    <VisualStudio>
      <FlavorProperties GUID="{349c5851-65df-11da-9384-00065b846f21}">
        <WebProjectProperties>
          <UseIIS>True</UseIIS>

不清楚为什么这对我们有效。

当然,我们的文件被签入源代码管理,此标记为 'False'(开发人员通常使用 IISExpress,不,将 <UseIISExpress> 标记设置为 'True' 没有帮助),因此自动更改此元素成为 CI 服务器的另一个步骤。