2
我有一个SSDT(Sql Server数据库项目),它引用外部.dll(C#类库)以提供一些CLR功能。 如果我在本地部署/发布一切正常,但远程工作,使用Microsoft.SqlServer.Dac.DacPackage炸弹。部署.dacpac缺少程序集参考
经过进一步调查,问题在于生成的.dacpac里面。不知何故,我的.dacpac文件有一个“硬编码”引用路径,它指向我的本地DEV环境,但是当它在TFS上运行时,源路径是不同的。
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**.
我使用这个类部署.dacpac
哪一个当然是我的本地开发路径。
我正在使用: DacDeployOptions.IncludeCompositeObjects但没有任何更改。
刚刚尝试过,它的工作原理 – Raffaeu