MsDeploy 与 DbDacFx 提供程序和数据库参考
MsDeploy with DbDacFx provider and Database reference
我们正在使用 DbDacFx 提供程序来同步我们的生产机器。
我们的解决方案中有 ssdt 数据库项目,我们随网站一起部署。
A.sqlproj 引用了 master.dacpac 和另一个数据库项目的 dacpac,比如 X.dacpac。
所有 dacpac 都在同一部署位置。
当我们尝试部署 A.dacpac 时,出现如下错误:
信息:将包部署到数据库:出错。错误:无法解析对来自名为 'X.dacpac' 的源的外部元素的引用,因为未加载此类源。错误:无法解析对来自名为 'master.dacpac' 的源的外部元素的引用,因为未加载此类源。 .....above errors repeated multiple times..... 在远程计算机上处理请求时发生错误。错误:调用的目标抛出了异常。 ---> System.Exception:未找到成员 'ClassName'。 at 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) --- 内部异常堆栈跟踪结束 -- - 在 System.RuntimeMethodHandle._SerializationInvoke(对象目标、SignatureStruct& declaringTypeSig、SerializationInfo 信息、StreamingContext 上下文)在 System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(对象对象、SerializationInfo 信息、StreamingContext 上下文)在 System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder 持有者)在 System.Runtime.Serialization.ObjectManager.DoFixups() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) 在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallMessage methodCallMessage) 在 Microsoft.Web.Deployment.Base64EncodingHelper.DeserializeHelper(BinaryFormatter formatter, Byte[] buffer) 在 Microsoft.Web.Deployment.Base64EncodingHelper.Deserialize(String str, Exception& handledException) 在 Microsoft.Web.Deployment.SerializationHelper.Deserialize(String str) 在 Microsoft.Web.Deployment.SqlDacPacProvider.ProcessExeOutput() 在 Microsoft.Web.Deployment.SqlDacPacProvider.RunExecutableAsync(String exeName, String arguments, Int32 waitInterval, Int32 retryAttempts) 在 Microsoft.Web.Deployment.SqlDacPacProvider.Add(DeploymentObject source, Boolean whatIf) Microsoft.Web.Deployment.DeploymentObject.Add(DeploymentObject source, DeploymentSyncContext syncContext) 在 Microsoft.Web.Deployment.DeploymentSyncContext.HandleAdd(DeploymentObject destObject, DeploymentObject sourceObject) 在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source)在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source) 在 Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject) 在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions , PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable1 syncPassId) at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable
1 passId) 错误:未找到成员 'ClassName'。在 System.Runtime.Serialization.SerializationInfo.GetElement(字符串名称,类型和找到的类型)在 System.Runtime.Serialization.SerializationInfo.GetString(字符串名称)在 System.Exception..ctor(SerializationInfo 信息,StreamingContext 上下文)错误计数:1.
需要知道我们如何克服这些问题。
谢谢
亚田.
运行 部署的机器上是否存在引用的 dacpac?
如果他们这样做,最简单的方法是将 dacpac 复制到与您正在部署的 dacpac 相同的文件夹中,因为将检查同一目录,如果失败,则包含原始 dacpac 的原始路径。
这仍然是一个痛苦。
我们计划通过 runCommand 提供程序编写 sqlpackage.exe 文件命令的脚本并实现自动化!!
关闭问题。
谢谢
我们正在使用 DbDacFx 提供程序来同步我们的生产机器。 我们的解决方案中有 ssdt 数据库项目,我们随网站一起部署。 A.sqlproj 引用了 master.dacpac 和另一个数据库项目的 dacpac,比如 X.dacpac。
所有 dacpac 都在同一部署位置。
当我们尝试部署 A.dacpac 时,出现如下错误:
信息:将包部署到数据库:出错。错误:无法解析对来自名为 'X.dacpac' 的源的外部元素的引用,因为未加载此类源。错误:无法解析对来自名为 'master.dacpac' 的源的外部元素的引用,因为未加载此类源。 .....above errors repeated multiple times..... 在远程计算机上处理请求时发生错误。错误:调用的目标抛出了异常。 ---> System.Exception:未找到成员 'ClassName'。 at 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) --- 内部异常堆栈跟踪结束 -- - 在 System.RuntimeMethodHandle._SerializationInvoke(对象目标、SignatureStruct& declaringTypeSig、SerializationInfo 信息、StreamingContext 上下文)在 System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(对象对象、SerializationInfo 信息、StreamingContext 上下文)在 System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder 持有者)在 System.Runtime.Serialization.ObjectManager.DoFixups() at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) 在 System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallMessage methodCallMessage) 在 Microsoft.Web.Deployment.Base64EncodingHelper.DeserializeHelper(BinaryFormatter formatter, Byte[] buffer) 在 Microsoft.Web.Deployment.Base64EncodingHelper.Deserialize(String str, Exception& handledException) 在 Microsoft.Web.Deployment.SerializationHelper.Deserialize(String str) 在 Microsoft.Web.Deployment.SqlDacPacProvider.ProcessExeOutput() 在 Microsoft.Web.Deployment.SqlDacPacProvider.RunExecutableAsync(String exeName, String arguments, Int32 waitInterval, Int32 retryAttempts) 在 Microsoft.Web.Deployment.SqlDacPacProvider.Add(DeploymentObject source, Boolean whatIf) Microsoft.Web.Deployment.DeploymentObject.Add(DeploymentObject source, DeploymentSyncContext syncContext) 在 Microsoft.Web.Deployment.DeploymentSyncContext.HandleAdd(DeploymentObject destObject, DeploymentObject sourceObject) 在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source)在 Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source) 在 Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject) 在 Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions , PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable1 syncPassId) at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable
1 passId) 错误:未找到成员 'ClassName'。在 System.Runtime.Serialization.SerializationInfo.GetElement(字符串名称,类型和找到的类型)在 System.Runtime.Serialization.SerializationInfo.GetString(字符串名称)在 System.Exception..ctor(SerializationInfo 信息,StreamingContext 上下文)错误计数:1.
需要知道我们如何克服这些问题。 谢谢 亚田.
运行 部署的机器上是否存在引用的 dacpac?
如果他们这样做,最简单的方法是将 dacpac 复制到与您正在部署的 dacpac 相同的文件夹中,因为将检查同一目录,如果失败,则包含原始 dacpac 的原始路径。
这仍然是一个痛苦。 我们计划通过 runCommand 提供程序编写 sqlpackage.exe 文件命令的脚本并实现自动化!! 关闭问题。 谢谢