msdeploy没有运行dbDacFx提供程序

时间:2012-10-23 22:39:43

标签: msbuild msdeploy webdeploy

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

使用以下内容 visual studio 2010与Azure发布工具和SSDT SQl Server 2008 R2 with 我项目中的wpp.targets文件。

该文件看起来像这样......

 <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文件,但是当我部署它时,提供者永远不会被调用... 非常感谢!

1 个答案:

答案 0 :(得分: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>