1

我正在构建一个部署脚本,该脚本应使用主机上可用的文件版本运行所包含的任务/目标。我的本地计算机(Windows 7 64位)安装了Visual Studio 10,2013和2014,因此当我探索C:\ Program Files(x86)\时,我发现Microsoft Visual Studio 10.0,Microsoft Visual Studio v11 .0,Microsoft Visual Studio v12.0,Microsoft Visual Studio v14.0,但从Microsoft Visual Studio C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ Extensions \ Microsoft的内容中缺少... SQLDB \ Dac \ 120 \ Microsoft.Data.Tools.Schema.Tasks.Sql.dll MSbuild希望存在以便属性运行我的数据库部署脚本。VisualStudioVersion属性需要v11文件夹才能包含丢失的SQLDB/DAC文件夹

C:\ Program Files文件(x86)的\的MSBuild \微软\ VisualStudio的\ 11.0 \ SSDT \ Microsoft.Da ta.Tools.Schema.SqlTask​​s.targets(469,5):错误MSB4062:在“ SqlModelResolutionTask“任务无法从程序集C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ Dac \ 120 \ Microsoft.Data.Tools.Schema.Tasks.Sql中加载。 DLL。 无法加载文件或程序集'file:/// C:\ Program Files(x86)\ Microsoft Visual Studio 11.0 \ Common7 \ IDE \ Extensions \ Microsoft \ SQLDB \ Dac \ 120 \ Microsoft.Data.Tools.Schema.Tasks .Sql.dll“或它的一个依赖项。该系统找不到指定的文件。 确认声明是正确的,程序集及其所有依赖项都可用,并且该任务包含一个实现Microsoft.Build.Framework.ITask的公共类。

需要在我的机器上安装什么软件包/ SDK才能获得..SQLDB \ Dac \ 120 \ Microsoft.Data.Tools.Schema.Tasks.Sql.dll和成功构建所需的其他Service Pack在我的情况?

回答

2

这里的问题是,当从命令行运行构建时,如果没有明确设置,MSBuild必须猜测VisualStudioVersion的值。目标文件默认为v11.0(VS2012),但您需要12.0(VS2013)。在脚本中,您可以明确指定版本:

msbuild <myproject.sqlproj> /p:VisualStudioVersion=12.0 

这应确保使用VS2013目标文件。同样的,2012年你会设置版本= 14.0。

+0

可能是一个错字,但VS2015版本= 14.0(不2012)。请参阅历史部分:https://en.wikipedia.org/wiki/Microsoft_Visual_Studio – JohnD 2016-05-17 19:41:49