J'ai un SSDT (Sql Server Database Project) qui fait référence à un fichier .dll externe (bibliothèque de classes C#) afin de fournir certaines fonctions CLR. Si je déploie/publie localement tout fonctionne correctement, mais à distance, en utilisant Microsoft.SqlServer.Dac.DacPackage il bombes. Le problème, après un examen plus approfondi, est à l'intérieur du fichier .dacpac généré. D'une certaine manière mon fichier .dacpac a un chemin de référence "codé en dur" qui fait référence à mon environnement DEV local mais quand il s'exécute sur TFS, le chemin source est différent.Deploy .dacpac manquant référence d'assembly
Je Déployez le .dacpac en utilisant cette classe:
var file = FileFinder.GetFirstFile("MyFile.dacpac");
var package = DacPackage.Load(file);
var deployOptions = new DacDeployOptions
{
BlockOnPossibleDataLoss = false,
CreateNewDatabase = true,
IncludeCompositeObjects = true
};
var dacService = new DacServices(ApplicationConfiguration.GetConnection("MyConn"));
dacService.Deploy(
package: package,
targetDatabaseName: "MyDB",
upgradeExisting: true,
options: deployOptions);
}
et à distance l'erreur est toujours le même, même si les fichiers .dll sont dans le même dossier du fichier .dacpac:
No file was supplied for reference Utilities.dll;
deployment might fail.
When C:\MyFile.dacpac was created, the original referenced file was located **C:\DEV\MAIN\UTILITIES.DLL**.
Ce qui est bien sûr mon chemin de développement local. J'utilise: DacDeployOptions.IncludeCompositeObjects mais rien ne change.
Juste essayé et ça marche – Raffaeu