SQL 服务器数据库发布配置文件未使用已配置的 属性

SQL Server Database Publish Profile not using configured property

我们的 SQL Server 2012 数据库有一个数据库项目。该数据库有一些 SQL CLR 程序集,它们很少更新,我希望将其排除在自动 dacpac 部署之外。我使用以下设置创建了发布配置文件。

发布个人资料

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
    <PropertyGroup>
        <TargetConnectionString></TargetConnectionString>
        <AllowIncompatiblePlatform>True</AllowIncompatiblePlatform>
        <CreateNewDatabase>False</CreateNewDatabase>
        <IgnorePermissions>True</IgnorePermissions>
        <DropObjectsNotInSource>False</DropObjectsNotInSource>
        <IgnoreUserSettingsObjects>True</IgnoreUserSettingsObjects>
        <IgnoreLoginSids>True</IgnoreLoginSids>
        <IgnoreRoleMembership>True</IgnoreRoleMembership>
        <ExcludeObjectTypes>"Assemblies;AsymmetricKeys"</ExcludeObjectTypes>
    </PropertyGroup>
</Project>

此配置文件最重要的部分是标签 ExcludeObjectTypes,根据 MS documentation 应该从部署中排除这些类型。当我尝试使用此配置文件在 Visual Studio 中进行发布时,它仍在为非对称密钥和程序集生成 create/alter 脚本。我怎样才能排除这些类型?

发布配置文件生成的脚本

...
GO
PRINT N'Creating Asymmetric Key [MyKey]...';

GO
CREATE ASYMMETRIC KEY [MyKey]
    AUTHORIZATION [dbo]
    WITH ALGORITHM = RSA_1024;

GO
PRINT N'Altering Assembly [MyAssembly]...';

GO
ALTER ASSEMBLY [MyAssembly]
    DROP FILE ALL;
...

SQL Server 2012 的语法必须不同于文档中链接的 SQL Server 的新版本。当我通过向导打开配置文件并单击 Advanced.. -> Ignore Tab and select Exclude assembles and 排除非对称密钥

然后它使用以下语法在发布配置文件中创建条目:

    <ExcludeAssemblies>True</ExcludeAssemblies>
    <ExcludeAsymmetricKeys>True</ExcludeAsymmetricKeys>

此定义正常生效。