让 MSBuild 和 CruiseControl .NET 构建和部署 VS2010 数据库项目

Posted

技术标签:

【中文标题】让 MSBuild 和 CruiseControl .NET 构建和部署 VS2010 数据库项目【英文标题】:Getting MSBuild and CruiseControl .NET to build and deploy VS2010 database projects 【发布时间】:2010-10-21 15:01:23 【问题描述】:

我几乎有一个 NAnt 脚本来构建和部署 VS2010 数据库项目,但是我遇到了一个错误:

C:\Program Files (x86)\MSBuild\Microsoft\VisualStudio\v10.0\TeamData\Microsoft.Data.Schema.TSqlTasks.targets(56,5): error MSB4062: The "SqlBuildTask" task could not be loaded from the assembly Microsoft.Data.Schema.Tasks.Sql, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a. Could not load file or assembly 'Microsoft.Data.Schema.Tasks.Sql, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies. The system cannot find the file specified. Confirm that the <UsingTask> declaration is correct, that the assembly and all its dependencies are available, and that the task contains a public class that implements Microsoft.Build.Framework.ITask. [xxx]
Failed to start MSBuild.
External Program Failed: C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\msbuild.exe (return code was 1)

我可以看到Microsoft.Data.Schema 程序集不在构建服务器上的 MSIL GAC 中 - 如果没有在构建服务器上全速安装 VS2010,是否有任何干净的方法可以做到这一点?

【问题讨论】:

【参考方案1】:

出于好奇,我询问了微软的 Barclay Hill,谁为我回答了这个问题:

您不能在其上构建数据库项目 机器,除非它们有 VS 或 TFS 2010 安装在他们身上。它不是一个 支持的场景。你可以部署 数据库项目构建输出没有 VS/TFS 使用 vsdbcmd 安装。这 做到这一点并保持一致的唯一方法 与许可和支持是 安装 VS Pro 的本地副本或 如果不使用,在你的构建框上更高 TFS。

【讨论】:

TFS 很棒。但它不是唯一的构建工具。我的规则是构建盒上不要有 VS200x 或 201x。所以所有的依赖都不是“隐藏的”......(当然不是生你的气(布兰登),谢谢你的信息。))微软帮助我谋生,但是伙计,他们每隔一段时间得到我的山羊。 PS Upvote 响应。

以上是关于让 MSBuild 和 CruiseControl .NET 构建和部署 VS2010 数据库项目的主要内容,如果未能解决你的问题,请参考以下文章

使用 CruiseControl.NET 和 MSBuild 发布网站

在 devenv 和 msbuild 中使用 CruiseControl.net 时输出二进制文件的任何差异

CruiseControl.Net 在使用 msbuild 任务的项目后重新启动

为啥 CruiseControl.NET 无法构建,但使用命令行中的 msbuild.exe 有效?

devenv CruiseControl 的记录器

巡航控制 .NET 4.0 MSBUILD 记录器