有没有一种方法可以发布dacpac的版本而不发布它?

时间:2020-08-24 17:11:21

标签: sql-server sql-server-data-tools

正如标题所述,我需要能够以编程方式验证dacpac的版本,然后再将其发布到数据库中。有办法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用AssemblyInfo进行此操作:

  1. 如果尚不存在;创建Properties\AssemblyInfo.cs。确保它包含在项目中并且至少包含以下代码:
using System.Reflection; 
[assembly: AssemblyVersion("1.0.*")] // Define however you want your version to be
  1. 在外部编辑器(记事本等)中编辑*.sqlproj文件,并添加以下XML:
    <Target Name="SetDacVersionToAssemblyVersion" AfterTargets="CoreCompile">
        <GetAssemblyIdentity AssemblyFiles="$(IntermediateTargetFullFileName)">
            <Output TaskParameter="Assemblies" PropertyName="IntermediateTargetAssembly" />
        </GetAssemblyIdentity>
        <PropertyGroup>
            <DacVersion>$(IntermediateTargetAssembly.Split(',')[1].Split('=')[1])
            </DacVersion>
        </PropertyGroup>
        <Message Text="DacVersion set to $(DacVersion)" Importance="high" />
    </Target>
  1. 使用PowerShell获取AssemblyVersion
Get-ChildItem -Filter *.dacpac -Recurse | Select-Object Name,@{n='FileVersion';e={$_.VersionInfo.FileVersion}},@{n='AssemblyVersion';e={[Reflection.AssemblyName]::GetAssemblyName($_.FullName).Version}}