0

我正在尝试将我的 dacpac 文件嵌入到包中,并在部署时运行 dbDacFx 提供程序。

在我的项目中使用以下带有 Azure 发布工具的 Visual Studio 2010 和带有 wpp.targets 文件的 SSDT SQl Server 2008 R2。

文件看起来像这样...

 <AfterAddIisAndContentDeclareParametersItems>
      $(AfterAddIisAndContentDeclareParametersItems);
      AddAdditionalAclsDeclareParameterItems;
      DeployUIConfigDatabase;
    </AfterAddIisAndContentDeclareParametersItems>
<Target Name="DeployUIConfigDatabase">
    <ItemGroup>
      <MsDeploySourceManifest Include="dbDacFx">
        <Description>Add dbDacFx $(_MSDeployDirPath_FullPath)\Database\%(CopyAdditionalFilesToDeploy.Identity) to Folder</Description>
        <Path>$(_MSDeployDirPath_FullPath)\Database\%(CopyAdditionalFilesToDeploy.Identity)</Path>
        <Dest>{UIConfigContext-Web.config Connection String</Dest>
        <IncludeTransactionalScripts>True</IncludeTransactionalScripts>
        <IncludeData>True</IncludeData>
        <AdditionalProviderSettings>IncludeData;IncludeTransactionalScripts</AdditionalProviderSettings>
      </MsDeploySourceManifest>
    </ItemGroup>
  </Target>

我可以看到 .zip 包有 dacpac 文件,但是当我部署它时,提供程序永远不会被调用......非常感谢!

4

1 回答 1

0

对于任何面临类似问题的人,看起来您还必须声明一个在部署阶段由 msdeploy 使用的参数。在我的 wpp 文件中添加以下内容会生成正确的参数文件,现在一切正常。

<Target Name="AddAdditionalDeployUIConfigDatabase">
    <ItemGroup Condition="'@(CopyAdditionalFilesToDeploy)' != ''">
      <MsDeployDeclareParameters Include="Add dbDacFx Provider Parameter %(CopyAdditionalFilesToDeploy.Identity)">
        <Kind>ProviderPath</Kind>
        <Scope>dbDacFx</Scope>
        <Description>Run dbDacFx provider on %(CopyAdditionalFilesToDeploy.Identity)</Description>
        <DefaultValue>{UIConfigContext-Web.config Connection String}</DefaultValue>
        <DestinationContentPath>$(_MsDeployParameterNameForContentPath)/@(CopyAdditionalFilesToDeploy)</DestinationContentPath>
        <Tags>Hidden</Tags>
        <ExcludeFromSetParameter>True</ExcludeFromSetParameter>
      </MsDeployDeclareParameters>
    </ItemGroup> 
于 2012-10-26T18:25:11.063 回答