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怎么办。