小编Phi*_*ipD的帖子

Visual Studio 2010和SQL Server 2008脚本和数据库更新的源代码管理工具?

我们目前正在使用Visual Studio 2010和SQL Server 2008 R2 - 开发使用(多个)SQL Server数据库的Intranet ASP.NET应用程序.

我们一直在为源代码控制中的SQL Server存储脚本(用于数据库),与SQL Server Management Studio(SSMS)或Visual Studio等任何工具分开.也就是说,我们有一组包含表,存储过程等脚本的文本文件; 我们在更新它们之前(例如在Management Studio中)直接检查这些来源和源代码控制,然后重新检入它们(然后使用SSMS中的脚本来更新数据库).

我们现在想采用更加综合的方法.

我已看过一些的问题/答案在StackOverflow上就有关SQL Server的源代码控制(其中一些可以追溯到StackOverflow上的几乎开始),但没有发现任何优秀的解决方案.此外,某些条目早于Visual Studio 2010或SQL Server 2008或某些现在可用的工具.

我还阅读了有关此主题的其他文章,例如Troy Hunt的文章(例如:http://www.troyhunt.com/2011/02/automated-database-releases-with.html)和K. Scott Allen的文章(例如:http://odetocode.com/blogs/scott/archive/2008/02/02/versioning-databases-views-stored-procedures-and-the-like.aspx).

SQL Server Management Studio具有"数据库项目"的概念,但这显然是一个不推荐使用的功能,不建议用于新开发.

我们目前正在考虑的方法是:

(1)在Visual Studio 2010中创建SQL Server 2008数据库项目,并将其连接到源代码管理(例如,TFS或VSS).[此选项可能需要Visual Studio的Premium或Ultimate或Team Database Edition.

此方法将脚本视为"主",并从中创建/更新数据库以与脚本版本同步.

这种方法的理想特征是:全局搜索,查找/替换,重构,有关缺失索引的警告或无效引用的项目等.

缺点是:没有用于表和其他项的GUI设计器,通过对列的一些更改很容易丢失数据(因为"alter"脚本删除了列并重新创建它),缺少"format document"命令(在Visual Studio中可用)用于Web项目,但不用于数据库项目).

(2)在SQL Server Management Studio中使用Red-gate SQL源代码控制(和SQL Compare).

此方法基本上将数据库视为"主",并根据数据库设计的更改更新脚本.在许多方面,这与许多小型开发团队的工作方式更为匹配.

这种方法的主要优点是您可以使用所有SSMS工具和设计器.

缺点是设计完整性检查较少,没有查找/替换或全局搜索(不安装其他附加组件),使用SQL源代码控制生成的脚本在语法上与SSMS或Visual Studio本机生成的脚本不同(最终结果是一样的).

=====

您是否有替代方法的建议,您是否使用/喜欢将SQL Server数据库的源代码控制集成到SQL Server Management Studio或Visual Studio 2010中的特定工具或实用程序,以及如何更新/同步开发和生产数据库有变化吗?

我还为此目的查看了一些其他软件实用程序/工具(其中一些已在其他StackOverflow主题中提到):

SQL Examiner(一种可能性,虽然它是一个完全独立的工具;没有集成到SSMS或Visual Studio中)

LiquiBase(Apache/Java,还没有.NET)

NeXtep(尚未支持SQL Server) …

sql-server version-control visual-studio

14
推荐指数
2
解决办法
9574
查看次数

有没有办法让多个IIS虚拟目录(应用程序)共享第三方组件DLL的单个副本?

有没有办法让多个IIS虚拟目录(应用程序)共享第三方组件DLL的单个副本?

我们有一组15-20个相关的ASP.NET应用程序(wwwroot的子目录,定义为IIS中的虚拟目录或应用程序),它们都运行在同一个网站上(基于根目录或wwwroot).环境是.NET 4.0.

通常,当我们使用第三方组件时,我们会将其添加到单个应用程序中,该应用程序通常会在web.config中添加一些条目,并将组件DLL文件复制到该应用程序中的bin文件夹以进行部署.如果在网站中的多个应用程序中使用相同的组件,则需要将组件DLL复制到每个应用程序(虚拟目录)中的bin文件夹中.当只有几个DLL时,这很好.

我们最近购买并开始使用供应商的ASP.NET组件集合(网格,图表等).如果我们在每个应用程序中使用几乎完整的组件套件,则需要将100MB或更多的DLL文件复制到每个应用程序中.即使我们只使用合理的组件子集,每个应用程序仍然可能是30-50MB.

我一直试图找到一种方法让每个应用程序使用可能安装在根目录中的组件DLL的单个共享副本.

我认为,理想的方法是在每台服务器上安装GAC(全局程序集缓存)中的组件,但这在我们的生产服务器环境中是不允许的.

我查看了"探测私有路径"选项,但这只允许从应用程序的子文件夹加载程序集.

我查看了"codeBase"选项,这似乎几乎使它成为可能,但并不完全.

我将其中一个组件DLL复制到C:\ Inetpub\wwwroot\bin,然后在子应用程序中向web.config添加了一个部分,类似于:

<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="COMPONENT-NAME" version="1.2.3.4" culture="neutral" publicKeyToken="NNNN"/>
    <codeBase version="1.2.3.4" href="http://SERVERNAME/bin/COMPONENT-NAME.dll"/>
  </dependentAssembly>
</assemblyBinding>
</runtime>
Run Code Online (Sandbox Code Playgroud)

其中name,version,publicKeyToken和文件名特定于我尝试使用的组件.

我还在子应用程序的web.config文件下面有相应的"添加程序集"部分.

尝试使用该组件运行子应用程序不起作用,因为IIS禁止"bin"文件夹作为URL可见(提供).

我将DLL移动到C:\ Inetpub\wwwroot\components并更改了codeBase的href属性以匹配.然后我收到此错误:此appdomain已禁用程序集的HTTP下载.(来自HRESULT的异常:0x80131048)有些搜索似乎表明这种限制内置于ASP.NET中,并且无法合理地进行更改.

然后我尝试将codeBase标记中的href更改为绝对文件路径,类似于:

<codeBase version="1.2.3.4" href="file://C:\Inetpub\wwwroot\components\COMPONENT-NAME.dll"/>
Run Code Online (Sandbox Code Playgroud)

这成功了,并允许子应用程序使用该组件运行和加载页面.

但是,我不喜欢使用这种方法,因为它依赖于操作系统中的绝对物理文件路径.此文件路径在开发,登台,测试和生产服务器中不同.我可以通过向每个环境发布不同的web.config文件来管理它,但这会增加部署错误的工作和风险.此外,由于我们的团队不拥有或控制生产服务器,因此无法保证我们网站的物理文件路径始终保持不变.

是否有任何实用的方法在网站中的所有chld应用程序之间共享组件DLL的单个副本,或者我只需要继续将DLL复制到每个应用程序中的bin文件夹中?

asp.net

6
推荐指数
1
解决办法
1543
查看次数

是否有任何解决方案Visual Studio 2013没有正确生成ASPX页面的.designer文件?

我们越来越频繁地遇到无法在Web项目中生成设计器文件的Visual Studio错误.在我们的几个ASP.NET项目中,这个问题已经发生了几个月.

保存文件或构建项目时会发生错误,并且会出现如下错误:

  • 为[filename]生成设计器文件失败:错误HRESULT E_FAIL已从调用COM组件返回.
  • 为[filename]生成设计器文件失败:未指定错误(HRESULT异常:0x80004005(E_FAIL))
  • 为[filename]生成设计器文件失败:已存在具有相同密钥的条目.
  • 为[filename]生成设计器文件失败:值不能为null.

有时,会显示有效的,以前正在运行的代码/标记的其他错误消息; 错误如:

  • 当前上下文中不存在名称"Eval"

这是使用Visual Studio 2013(Premium),使用.NET 4.5框架的"Web应用程序项目"类型项目.某些项目最初是在Visual Studio 2010或Visual Studio 2012中创建的,但其中一个项目是在Visual Studio 2013中创建的新项目.

我们安装了一些Visual Studio扩展,例如"Web Essentials 2013"​​,但我尝试禁用所有已安装的Visual Studio扩展,但仍然会出现相同的设计器文件错误.我们没有安装Resharper或CodeRush.我们还使用ASP.NET的第三方组件包(DevExpress).我们将IIS Express用于本地开发Web服务器.

已为Visual Studio,操作系统(Windows 8.1),.NET,Visual Studio扩展和DevExpress安装了所有可用更新(包括Visual Studio 2013的更新1).

我已经在这个问题上搜索了StackOverflow和网页,并且找到了一些建议但没有解决方案,而且我也看到这个问题已经多次报告给微软,可以追溯到几年前.

许多迹象表明,生成设计器文件的问题是由一些无效的语法(在ASPX文件中),或在同一范围内具有相同ID的多个元素,或命名空间或类名称中的冲突等引起的.我通过我们的搜索对于像这样的问题,尽我所能的项目,但没有找到任何.

我在Sourceforge上找到了Redesigner项目(非常感谢作者),我尝试使用它来验证设计器文件,但遗憾的是它无法处理DevExpress组件(它报告DevExpress元素在使用时无效的子标签标签对DevExpress有效且正确.

我还尝试清除工作站上的Visual Studio开发缓存(即,从文件夹"\ Temp\IISExpress","\ Temp\Temporary ASP.NET Files"和"\ Microsoft\WebsiteCache"文件夹中删除所有内容%localappdata%文件夹,重新启动并重新启动Visual Studio.

我还找到了一个网站,解释了如何打开Visual Studio的其他日志记录,以帮助跟踪设计器文件生成问题.对于Visual Studio 2013,这需要添加密钥HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\12.0\WebApplicationProjects\Debug,然后在该密钥下添加"Enabled"(设置为1),"LogFieldGeneratorFailures"(设置为1),以及"LogFile"(设置为您有权写入的路径和文件名).

当我添加此密钥时,Visual Studio 2013确实写入了调试日志文件,但它只包含类似于上面的错误消息的错误消息,加上一个小的堆栈跟踪以及设计器文件不能用于的ASPX文件的全部内容.生成(没有明显指示ASPX页面中可能存在错误或语法无效的位置).

我想我已经在本主题中尝试了基本上所有建议的方法: 如何强制Visual Studio重新生成aspx/ascx文件的.designer文件?

这些都不适合我.在这些项目中,Visual Studio 2013中无法使用ASPX文件的"转换为Web应用程序"选项.

有没有人对此desinger文件问题或任何其他故障排除方法的潜在原因或修复有任何建议?

asp.net visual-studio

2
推荐指数
1
解决办法
3861
查看次数