0
votes

We are using DbDacFx provider to sync our production machine. We have ssdt database project in our solution that we deploy along with our website. The A.sqlproj has references to master.dacpac and another database project's dacpac, say X.dacpac.

All dacpacs are in same location for deployment.

When we try to deploy the A.dacpac we get errors as below:

Info: Deploying package to database: Faulted. Error: The reference to external elements from the source named 'X.dacpac' could not be resolved, because no such source is loaded. Error: The reference to external elements from the source named 'master.dacpac' could not be resolved, because no such source is loaded. .....above errors repeated multiple times..... An error occurred when the request was processed on the remote computer. Error: Exception has been thrown by the target of an invocation. ---> System.Exception: Member 'ClassName' was not found. 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) --- End of inner exception stack trace --- at System.RuntimeMethodHandle._SerializationInvoke(Object target, SignatureStruct& declaringTypeSig, SerializationInfo info, StreamingContext context) at System.Runtime.Serialization.ObjectManager.CompleteISerializableObject(Object obj, SerializationInfo info, StreamingContext context) at System.Runtime.Serialization.ObjectManager.FixupSpecialObject(ObjectHolder holder) at 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) at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, IMethodCallMessage methodCallMessage) at Microsoft.Web.Deployment.Base64EncodingHelper.DeserializeHelper(BinaryFormatter formatter, Byte[] buffer) at Microsoft.Web.Deployment.Base64EncodingHelper.Deserialize(String str, Exception& handledException) at Microsoft.Web.Deployment.SerializationHelper.Deserialize(String str) at Microsoft.Web.Deployment.SqlDacPacProvider.ProcessExeOutput() at Microsoft.Web.Deployment.SqlDacPacProvider.RunExecutableAsync(String exeName, String arguments, Int32 waitInterval, Int32 retryAttempts) at Microsoft.Web.Deployment.SqlDacPacProvider.Add(DeploymentObject source, Boolean whatIf) at Microsoft.Web.Deployment.DeploymentObject.Add(DeploymentObject source, DeploymentSyncContext syncContext) at Microsoft.Web.Deployment.DeploymentSyncContext.HandleAdd(DeploymentObject destObject, DeploymentObject sourceObject) at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildren(DeploymentObject dest, DeploymentObject source) at Microsoft.Web.Deployment.DeploymentSyncContext.SyncChildrenOrder(DeploymentObject dest, DeploymentObject source) at Microsoft.Web.Deployment.DeploymentSyncContext.ProcessSync(DeploymentObject destinationObject, DeploymentObject sourceObject) at Microsoft.Web.Deployment.DeploymentObject.SyncToInternal(DeploymentObject destObject, DeploymentSyncOptions syncOptions, PayloadTable payloadTable, ContentRootTable contentRootTable, Nullable1 syncPassId) at Microsoft.Web.Deployment.DeploymentAgent.HandleSync(DeploymentAgentAsyncData asyncData, Nullable1 passId) Error: Member 'ClassName' was not found. 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) Error count: 1.

Need to know how we can overcome the issues. Thanks Yatin.

2
Additionally, here are some warnings given Warning: No file was supplied for reference X.dacpac; deployment might fail. When package was created, the original referenced file was located C:\BUILDS\9\DEV\.....\SHAREDASSEMBLIES\X.DACPAC. Warning: No file was supplied for reference master.dacpac; deployment might fail. When package was created, the original referenced file was located C:\BUILDS\9\DEV\...\SHAREDASSEMBLIES\MASTER.DACPAC. These warnings are issued by MsDeploy while using package provider and manifest... - Yshah00

2 Answers

0
votes

Do the referenced dacpacs exist on the machine that is running the deploy?

If they do the easiest is to copy the dacpacs into the same folder as the dacpac you are deploying as the same directory will be checked, failing that the original path that contained the original dacpac.

0
votes

This is still a pain. We plan on scripting the sqlpackage.exe file command through runCommand provider and get automation going !! Closing the question. Thanks