VS2012 Post-Deployment 脚本引用了其他几个脚本

Posted

技术标签:

【中文标题】VS2012 Post-Deployment 脚本引用了其他几个脚本【英文标题】:VS2012 Post-Deployment script referring to several other scripts 【发布时间】:2013-05-28 08:45:34 【问题描述】:

我在VS2012 中创建了一个数据库项目。我添加了数据库结构。它可以很好地发布和比较数据库。

现在在发布时,我想自动加载几个带有默认数据的表。

我用 SQL Management Studio 生成的 INSERT 语句创建了五个脚本文件。它们被添加到我的数据库项目中的脚本文件夹中。

然后我设置BuildAction=PostDeploy。这工作正常。但是由于某种原因,只能将一个脚本设置为PostDeploy ....

我意识到我可以将所有脚本移动到一个文件中。但是我有很多,并且真的很想将它们分组到单独的文件中以保持某种顺序。

然后我创建了一个PostDeploy.sql 文件并尝试从那里引用所有其他脚本文件。文件头给出了方向:

Post-Deployment Script Template                         
----------------------------------------------------------------------------
This file contains SQL statements that will be appended to the build script.
Use SQLCMD syntax to include a file in the post-deployment script.
Example:      :r .\myfile.sql

所以我写了我的文件:

:r .\MyScript1.sql
:r .\MyScript2.sql
:r .\MyScript3.sql
:r .\MyScript4.sql
:r .\MyScript5.sql

文件抱怨语法错误。

【问题讨论】:

【参考方案1】:

原来 Visual Studio 用错误的语法警告欺骗了我!我的设置完全有效。

为避免出现警告,请右键单击文件内的任意位置并选择“执行设置 - SQLCMD 模式”。

还有一个名为 SQLCMD Mode 的工具栏按钮做同样的事情。

如果您找不到工具栏按钮,这里是菜单项:

【讨论】:

这解决了 Transact-SQL 编辑器认为是语法错误的问题。但是 SSDT 项目仍然无法构建或部署。 尝试完全关闭 Visual Studio。通过删除 bin 和 obj 文件夹、*.dbmdl、*.suo 和 *.user 文件来清理您的 SSDT 解决方案,然后重新打开您的 SSDT 解决方案。您现在应该能够构建/部署您的项目了。 @Pat 查看输出窗口(而不是错误列表) - 您应该在那里看到实际错误。在我的情况下,我的包含文件的路径中有空格,整个路径需要用双引号括起来。无需清洁/重启。【参考方案2】:

您可能还需要检查并查看您的项目文件中发生了什么变化。我最终不小心重命名了我的部署后脚本,这导致了这个错误。修复了项目文件中部署后脚本的问题,它再次开始正常工作。

【讨论】:

以上是关于VS2012 Post-Deployment 脚本引用了其他几个脚本的主要内容,如果未能解决你的问题,请参考以下文章

如何仅在 VS 2012 中的 Web 部署发布任务之前执行 PowerShell 脚本?

Unity3D设置使用VS2012做脚本编辑,但每次还是启动Monodevelop怎么办。

如何使用 VS2012 编译 OpenSplice 5.5.1 社区版

VS 2012项目转换烦恼

vs2010上如何调试unity脚本

VS 2013 数据库项目:基于构建配置运行的部署后脚本