У меня есть SSDT (проект базы данных сервера Sql), который ссылается на внешнюю DLL-библиотеку (C# Class Library), чтобы предоставить некоторые функции CLR. Если я Deploy/Publish локально, все работает отлично, но удаленно, используя Microsoft.SqlServer.Dac.DacPackage, он бомбит.Развернуть .dacpac отсутствует ссылка на сборку
Проблема, после дальнейшего изучения, находится внутри генерируемого .dacpac. Так или иначе, мой файл .dacpac имеет «жестко запрограммированный» ссылочный путь, который относится к моей локальной среде DEV, но когда он запускается на TFS, путь источника отличается.
Я развернуть .dacpac с помощью этого класса:
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);
}
и удаленно ошибка всегда одинаково, даже если находятся в библиотек .dll той же папке файла .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**.
Это, конечно, мой локальный путь.
Я использую: DacDeployOptions.IncludeCompositeObjects, но ничего не меняется.
Просто попробовал и работает – Raffaeu