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