【问题标题】:Is there a way to derive the version of a dacpac without publishing it?有没有办法在不发布的情况下导出 dacpac 的版本?
【发布时间】:2020-08-24 17:11:21
【问题描述】:

正如标题所述,我需要能够在将 dacpac 发布到数据库之前以编程方式验证它的版本。有没有办法做到这一点?

【问题讨论】:

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


    【解决方案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}}
    

    【讨论】:

      猜你喜欢
      • 2021-06-17
      • 2010-12-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-01
      • 2021-10-25
      相关资源
      最近更新 更多