65.9K
CodeProject 正在变化。 阅读更多。
Home

DB 手动复制 Visual Studio 2005 插件

starIconstarIconstarIconemptyStarIconemptyStarIcon

3.00/5 (1投票)

2005年11月29日

CPOL

3分钟阅读

viewsIcon

36857

downloadIcon

75

用于在项目主文件夹和输出文件夹之间复制 SQL Server 2005 Express 数据文件的插件。

Sample Image - DBManualCopy.jpg

引言

我在 Visual Studio 2005 中发现的一个令人讨厌的特性是它在调试项目时如何处理 SQL Server 2005 Express 数据库文件(.MDF.LDF)。默认情况下,Visual Studio 对于数据库类型的内容文件,将“复制到输出目录”选项设置为“始终复制”。 如果您经常更改数据库模式、表、存储过程、视图等,这很好,但是如果您有一个工作模式,您想通过应用程序和 IDE 进行编辑,您必须将选项设置为“不复制”。 这是因为如果您通过“服务器资源管理器”窗口中的“数据连接”编辑数据库,即使您展开数据库中的表,数据库文件也会修改日期/时间,并且您根本无法使用“如果较新则复制”选项。

现在,由于我发现“不复制”选项是最简单的解决方法,因此我不想离开我最喜欢的 IDE 来复制和粘贴调试会话之间的数据库文件。 因此,我决定编写一个 Visual Studio 插件来为我做这件事 - 部分原因是出于好奇,因为我以前没有为 Visual Studio 编写过插件,但部分原因是为了满足确切的需求。 我刚刚开始构建一个包含大量主/细节表单的应用程序,我宁愿使用我的应用程序来编辑数据,而不是使用服务器资源管理器中的直接表连接。

此插件的工作方式是创建三个按钮来执行实际的数据复制。 我将解释这些按钮的作用

<- Copy DB From Active Output

此按钮将数据库活动输出文件夹(即 \bin 文件夹下的Debug/Release)复制到主项目文件夹。 这会将您的应用程序上次使用的数据库复制到项目主文件夹。

-> Copy DB To Active Output

此按钮将数据库活动输出文件夹(即 \bin 文件夹下的Debug/Release)从主项目文件夹复制。 这会将您可能在“服务器资源管理器”中编辑过的数据库复制到调试文件夹。

-> Copy DB To All Outputs

此按钮将数据库复制到所有可能的输出文件夹。 通常,只有 Debug/Release,但您的解决方案可能定义了更多输出。 否则,它的工作方式与“复制数据库到活动输出”相同。

正如提供的源代码所示,这是一个相当简单的软件。 我添加的一些不错的功能是它仅在应用程序文件夹包含数据库文件时才显示按钮。

限制

  • 尚未在 ASP.NET 应用程序中进行测试,目前仅适用于 WinForms。
  • 不适用于应用程序文件夹下的文件夹(即,如果您有一个Databases子文件夹,则这些按钮将不起作用)。
  • 操作按钮位于“标准”工具栏中。 由于工具栏默认情况下相当宽,因此应该有一个用于此插件的工具栏,因此它们可能不会在较小的屏幕分辨率中显示。
  • 当源或目标数据库文件正在使用时,该插件不起作用。 尽管这是 Windows 的一个限制,但即使在应用程序运行时,该插件也可以使用 SQL Server 管理对象临时断开数据库连接,以便替换数据库文件(可能值得实现)。
  • 仅在“\bin”文件夹下复制; 信息应从项目属性中检索。

未来方向

  • 修复上述限制。
  • 应该提供键盘快捷键以实现更快的访问。
  • 可能在创建数据库文件时预先将“复制到输出目录”属性设置为“不复制”,因为在大多数情况下,“始终复制”没有用处。
© . All rights reserved.