我的团队已经多年(在我加入之前)没有采用sql server数据库项目。主要是因为有些项目具有循环引用,因此无法构建。我意识到推荐的方法是分解或修复循环引用。
然而,要证明我们可以使用它们而不必修复所有技术债务,我想挂钩我的sql server项目的构建过程以从Build
项目组中删除项目。我对msbuild非常熟悉,但到目前为止似乎没有任何内容正在改变包含在构建中的文件并使其失败。
将文件设置为None
而不是Build
可以正常工作,直到我们尝试进行架构比较。它将它们重新设置为构建,或者使用以_1.sql
结尾的新文件名再次添加它们
<Target Name="CustomSqlHook" BeforeTargets="CheckRequiredProperties;BeforeBuild;All;_SetupSqlBuildInputs;SqlBuild;SqlStaticCodeAnalysis;ResolveArtifactReferences;Build">
<Message Text="Build Before: @(Build)" Importance="high" />
<Message Importance="High" Text="custom sql hooked" />
<Message Importance="High" Text="build items are @(Build->Count())" />
<ItemGroup>
<Build Remove="project\Views\uvw_survey_history.sql" />
</ItemGroup>
<Message Text="-------------------------" />
<Message Text="Build After: @(Build)" Importance="high" />
<Message Importance="High" Text="build items are @(Build->Count())" />
</Target>
显示构建组中包含的项目数从2978到2977.但是,构建在同一文件上仍然失败。
答案 0 :(得分:1)
您可以为项目添加配置(默认情况下您有Debug / Release - 添加'Schema')。
然后手动编辑项目文件,将以下属性添加到您在进行模式比较时仅包含的每个项目:
条件=“'$(配置)'=='架构'”