Visual studio 2013 在构建应用程序时将SQL项目部署到localdb

Visual studio 2013 在构建应用程序时将SQL项目部署到localdb,visual-studio-2013,sql-server-data-tools,Visual Studio 2013,Sql Server Data Tools,这可能是一个很容易回答的问题,但我在这里浪费时间试图研究一些愚蠢的小事,所以我想我应该在这里提出这个问题 我在VS2013中有两个项目的解决方案。主项目(启动项目)是一个C#Winforms项目,目标是一个DB,第二个项目是一个SQL项目,具有所述DB的模式 因此,我可以进行更改并构建SQL项目。我可以拍快照,一切都很顺利。我不能做的是运行该项目(它应该将其发布到(localdb)调试项目中)。如果单击“运行”,它将运行默认的启动项目 当然,我可以临时将SQL项目设置为默认启动项目,然后运行,然

这可能是一个很容易回答的问题,但我在这里浪费时间试图研究一些愚蠢的小事,所以我想我应该在这里提出这个问题

我在VS2013中有两个项目的解决方案。主项目(启动项目)是一个C#Winforms项目,目标是一个DB,第二个项目是一个SQL项目,具有所述DB的模式

因此,我可以进行更改并构建SQL项目。我可以拍快照,一切都很顺利。我不能做的是运行该项目(它应该将其发布到(localdb)调试项目中)。如果单击“运行”,它将运行默认的启动项目

当然,我可以临时将SQL项目设置为默认启动项目,然后运行,然后再次将主项目设置为默认启动项目

当然,一定有一种方法可以让我构建SQL项目,并让它一次发布到调试数据库,或者至少像上面所描述的那样以更简单的步骤发布


事实上,我最终想要的是,如果有一个热键将构建两个项目,将SQL项目发布到调试数据库并运行主项目。

在每个构建上运行DB deploy有两个方面,一方面您希望数据库是最新的,但另一方面它非常慢,而且非常令人恼火很快

你可以做的是让你的c应用程序作为启动应用程序,所以按F5键启动它,但也可以将键盘快捷键映射到“Build.SSDTPublishSelection”,我映射CTRL+6,因为它接近F5,我没有使用过这种快捷键组合(至少在过去15年中没有!)-这只会发布所选项目,因此您确实需要首先在对象资源管理器中选择它(我已经用另一系列快捷方式将焦点设置为解决方案资源管理器并与当前文档同步-我知道键盘天堂,谁需要vim和emacs ha)

这是你确保项目被选中CTRL+6,然后发布F5,你应该得到你想要的

另外一件事是,如果您还没有,请查看允许您直接发布存储过程而无需经过发布周期的加载项,这样您就可以进行增量更改,然后在准备好进行完整发布并运行所有测试时(Dave Ballantine发布了一个:我有一个:)

希望有帮助


Ed Elliott

没关系,我已经弄明白了。转到项目->项目依赖项

在“项目:”组合框中选择WinForms项目,并在“依赖:”检查表框中勾选数据库项目

WinForms项目现在依赖于数据库项目,如果您运行应用程序,VS将首先构建DB项目,然后将其发布到调试DB,然后构建WinForms项目,然后运行它。或者看起来是这样


谢谢,这似乎是个好主意,但效果不太好-除非我缺少一些明显的东西。当我通过映射的键盘快捷键调用Build.SSDTPublishSelection时,它会弹出“发布数据库”对话框,我首先必须在其中指定目标数据库连接(默认为空)和数据库名称(至少默认情况下是正确的)。我可以保存配置文件,然后在下次加载它,但这比将SQL项目设置为活动项目并点击F5更麻烦。所以你想吃饱你的蛋糕吗?哈哈-在visual studio中可以映射10个外部工具(工具-->外部工具),如果将其映射到sqlpackage.exe并使用适当的参数(/Action:Publish等),则可以使用命令Tools.ExternalCommandXX(XX是命令的编号)发布,您可以使用msbuild变量访问生成目录等,以便用于多个项目。这样,您可以进行发布,然后开始调试,但发布确实需要一段时间,这是否更好?我肯定发布需要一段时间,但我认为这一要求相当直接。我无法想象它如何能够你可以通过第三方工具来实现。看看我刚才在我自己的问题上发布的答案。这似乎是可能的,毕竟我的想法是这样的-除非我忽略了什么。如果你愿意在每次运行你的应用程序调试时进行比较和发布,那么就我个人而言,我会对应用程序进行更多的更改,而不是db更改,这样它会变得更酷ets非常快(sqlpackage不是第三方,它是ssdt的一部分)很酷无论你在VS中使用F5,sqlpackage还是模式比较,它们都在引擎盖下使用DacFx,做基本相同的事情