Visual Studio 2012。SQL Server 数据库项目。
解决方案中创建了四个构建配置:Debug、DevDb、TestDb、LocalDb。
在项目中创建了三个发布配置文件:DevDb.publish.xml、TestDb.publish.xml、LocalDb.publish.xml
按下 F5 按钮(!)我想:
- 如果 构建配置为Debug ,则使用项目属性中的连接字符串部署项目。
- 如果构建配置为 DevDb、TestDb或LocalDb ,则使用相应发布配置文件中的连接字符串发布项目。
为此,我编辑项目 (.sqlproj) xml,尝试捕获对 Deploy 目标的调用并用自定义行为替换标准 Deploy 目标:
<Target Name="Deploy">
<!-- The first statment is for Debug configuration -->
<MSBuild Condition=" '$(Configuration)' == 'Debug' "
Targets="Deploy"
Projects="$(MSBuildProjectFile)"
Properties="Configuration=$(Configuration);"
/>
<!-- The second statement is for DevDb, TestDb, LocalDb configurations -->
<MSBuild Condition=" '$(Configuration)' != 'Debug' "
Targets="SqlPublish"
Projects="$(MSBuildProjectFile)"
Properties="SqlPublishProfilePath=$(Configuration).publish.xml;
Configuration=$(Configuration);"
/>
</Target>
第二条语句运行良好,我将部署到正确的目的地。
问题出在第一条语句上——它产生了循环依赖。
错误 MSB4006:在涉及目标“部署”的目标依赖图中存在循环依赖。
我的问题是:如何与标准目标相交(捕获和替换)以及是否需要再次调用标准目标?
还是我想重新发明轮子,还有另一种方法可以做我想做的事?(我想要的内容在上面的“按下 F5 按钮”下进行了描述:)