5

我有一个设置和部署项目,在我们的构建服务器上,它在摘要中报告以下内容:

==========全部重建:25成功,2失败,0跳过==========

我不知道这两个失败的原因是什么,但我相信其中之一是 vdproj 项目,因为如果我在没有安装程序的情况下运行构建,则根本不会报告任何错误。“打包文件”消息与我的 PC 上的输出匹配,构建成功完成。

我确信这是一个环境问题,只是没有任何日志可以说明问题所在 - 只有摘要中的数字。

更奇怪的是,setup.exeandmyapp.msi文件似乎生成得很好。我无法弄清楚失败的项目是什么,因为没有提到失败的项目。我所知道的是,如果我构建不包括安装项目的解决方案,摘要会显示没有错误。

谁能想到要检查的东西?

4

4 回答 4

11

最后的答案是它是一个已知的错误:https ://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=317870

答案是修改包含 LINQ to SQL dbml 文件的项目文件 (*.csproj) 以删除一些东西,如下所示:

  1. 关闭 VS 2008。
  2. 在记事本中打开包含 LINQ To SQL 项的项目文件。
  3. 删除以下行:
    [ItemGroup]
    [Service Include="{3259AA49-8AA1-44D3-9025-A0B520596A8C}"/]
    [/ItemGroup]

安装项目现在将成功构建。但是,如果您双击 DBML 文件以在 VS 2008 中打开设计器,则安装项目将再次停止构建。上述行不会重新添加到项目文件中,但安装项目无论如何都会停止构建。只需重新启动 VS 2008,它就会再次工作——直到您再次打开 DBML 设计器。一旦安装项目由于这个问题而失败,它永远不会成功构建,直到你重新启动 VS 2008。

我最终从MS Connect 论坛主题中找到了答案(或至少是答案的链接)。这是记录在案的解决方法

于 2009-05-15T12:30:54.640 回答
0

(你没有说你有什么样的构建服务器。因为你标记了“.net”,我假设你正在使用 TFS 和 Team Build。)

Team Build 使用 MSBuild(实际上是 MSBuild)。MSBuild 无法构建 vdproj 文件。只有 Visual Studio 可以做到这一点。

因此,如果您包含包含 vdproj 文件的解决方案,那么它们将失败。(检查 vdproj 项目周围的构建日志,看看它们是否失败。)

阻止这些失败注册的一种方法是创建一个您为 Team Build 编译的配置,该配置不包括您的 vdproj 文件(如果失败的项目确实困扰着您)。

获取 msi 和 exe 文件的最佳方法是在 vdproj 项目上运行 Visual Studio。在构建完成后添加自定义目标并在您的项目上手动调用 Visual Studio。(除非您这样做,否则我不知道为什么会生成您的 msi 和 exe 文件。)

作为替代方案,请考虑 Windows Installer XML (WIX)。第 3 版(非常接近完整版本并且有一个稳定的测试版)使用 MSBuild。这意味着您的解决方案可以通过 Team Build 编译,无需任何特殊操作。唯一的缺点是 WIX 不能以“任何 CPU”为目标,但只要它针对特定平台,它就可以成为“任何 CPU”的解决方案级别目标的一部分。

于 2009-05-15T05:09:10.443 回答
0

是的,我以前有过这个。

不确定您的设置,但试试这个是合适的:

首先,右键单击您的解决方案文件 > 属性 > 配置

在那里,使用构建复选框来试验哪些项目可以一起构建,哪些不可以。

此外,在您的文件系统中,删除所有项目的调试/发布文件夹。

最后,根据我的经验,此错误通常是由损坏/丢失的 web.config 引起的。

让我知道你怎样去

于 2009-05-15T05:17:45.930 回答
0

在我的情况下,由于版本格式不正确(“版本”项目属性),项目无法构建。接受的格式是 XXX,如 1.0.0 当我将其更改为 1.0.0.0 时,项目将无法构建。

于 2018-08-27T21:13:58.323 回答