发布时未部署SQL SMO程序集

时间:2011-08-25 06:02:28

标签: .net visual-studio deployment configuration

关于部署与SMO相关的一些程序集,我遇到了一些问题。我的项目中有以下5个参考文献:

enter image description here

每个都是库文件夹中的.dll,它是添加引用的位置,每个都设置为Copy Local = true。项目文件显示所有这些都是有序的,例如:

<Reference Include="Microsoft.SqlServer.Smo, Version=10.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
  <HintPath>..\Libraries\Microsoft.SqlServer.Smo.dll</HintPath>
  <Private>True</Private>
</Reference>

问题是,每次我从PC上的Visual Studio发布时,都不会复制程序集。当我通过TeamCity发布时(确实没有安装SQL Server或SMO SDK)。我可以手动复制程序集,运行得很好(没有GAC依赖),但显然我想在部署过程中封装它。

什么可以阻止这些程序集发布?

2 个答案:

答案 0 :(得分:12)

我相信在部署基于SMO的应用程序时,您不应该只复制DLL。请看这个链接:Distributing an Application That Uses SQL Server Management Objects。我引用:

  

如果您开发使用SQL Server管理对象的应用程序,   您需要确保存在必要的支持文件   带有应用程序的计算机。 SQL Server 2008功能包   包含SQL Server管理的可再发行组件包   对象。

您需要从此下载链接获取SharedManagementObjects.msi:http://www.microsoft.com/download/en/details.aspx?id=16978

答案 1 :(得分:2)

微软员工Monica Rivera在MSDN thread中确认可以将DLL与您的应用程序捆绑在一起:

  

这是另一种方式。您可以选择在VS项目的构建中包含必要的DLL。如果在项目中选择引用并将属性“Copy Local”更改为True,则相应的DLL将包含在构建中。

因此,根据MSDN主题,两种解决方案都很好。