MsDeploy与DbDacFx提供程序和数据库引用

时间:2015-10-09 18:42:17

标签: database reference msdeploy dacpac

我们正在使用DbDacFx提供程序来同步我们的生产机器。 我们的解决方案中有ssdt数据库项目,我们与我们的网站一起部署。 A.sqlproj引用了master.dacpac和另一个数据库项目的dacpac,比如说X.dacpac。

所有dacpac都在同一位置进行部署。

当我们尝试部署A.dacpac时,我们会收到如下错误:

信息:将软件包部署到数据库:出错。错误:无法解析对名为“X.dacpac”的源中的外部元素的引用,因为未加载此类源。错误:无法解析对名为“master.dacpac”的源中的外部元素的引用,因为未加载此类源。 .....多次重复错误.....在远程计算机上处​​理请求时发生错误。错误:调用目标抛出了异常。 ---> System.Exception:找不到成员'ClassName'。 System.Runtime.Serialization.SerializationInfo.GetElement(String name,Type& foundType)at System.Runtime.Serialization.SerializationInfo.GetString(String name)at System.Exception..ctor(SerializationInfo info,StreamingContext context)--- End系统的System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj,SerializationInfo info,StreamingContext context)中的System.RuntimeMethodHandle._SerializationInvoke(Object target,SignatureStruct& declaringTypeSig,SerializationInfo info,StreamingContext context)的内部异常堆栈跟踪System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler,__BinaryParser serParser,Boolean fCheck,Boolean isCrossAppDomain)中System.Runtime.Serialization.ObjectManager.DoFixups()的.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder) ,System.Runtime.Serialization.Formatters.Binary的IMethodCallMessage methodCallMessage) .BinaryFormatter.Deserialize(Stream serializationStream,HeaderHandler handler,Boolean fCheck,Boolean isCrossAppDomain,IMethodCallMessage methodCallMessage)在Microsoft的System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream,HeaderHandler handler,Boolean fCheck,IMethodCallMessage methodCallMessage)。 Microsoft.Web.Deployment.Base64EncodingHelper.Deserialize(String str,Exception&在Microsoft.Web.Deployment.SqlDacPacProvider.ProcessExeOutput()的Microsoft.Web.Deployment.SerializationHelper.Deserialize(String str)处于Microsoft.Web.Deployment.SqlDacPacProvider.RunExecutableAsync(String exeName,String arguments,Int32 waitInterval,Int32 retryAttempts) )在Microsoft.Web.Deployment.Deployment.DandloymentAdd(DeploymentObject源,DeploymentSource,文本同步文本)上的Microsoft.Web.Deployment.SqlDacPacProvider.Add(DeploymentObject source,Boolean whatIf)处于Microsoft.Web.Deployment.DeploymentSyncContext.HandleAdd(DeploymentObject destObject,DeploymentObject) Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject,Microsoft)上的Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject目标,DeploymentObject源)中的Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject目标,DeploymentObject源)上的sourceObject) DeploymentObject sourceObject)在Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject,DeploymentSyncOptions syncOptions,PayloadTable payloadTable,ContentRootTable contentRootTable,Nullable 1 syncPassId) at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable 1 passId)错误:找不到成员'ClassName'。 System.Runtime.Serialization.SerializationInfo.GetElement(String name,Type& foundType)at System.Runtime.Serialization.SerializationInfo.GetString(String name)at System.Exception..ctor(SerializationInfo info,StreamingContext context)错误计数:1

需要知道我们如何克服这些问题。 谢谢 雅鼎。

2 个答案:

答案 0 :(得分:0)

在运行部署的计算机上是否存在引用的dacpac?

如果他们这样做最简单的方法是将dacpacs复制到与您正在部署的dacpac相同的文件夹中,因为将检查相同的目录,而不是包含原始dacpac的原始路径。

答案 1 :(得分:0)

这仍然很痛苦。 我们计划通过runCommand提供程序编写sqlpackage.exe文件命令脚本并获得自动化! 结束这个问题。 感谢