在我的方案的简化版本中,我正在开发一个使用ClickOnce部署的VB.Net应用程序,其中包含用于生产代码的Live分支,以及用于工作的Dev分支。
我想将每个分支部署到不同的位置(live for release和dev for testing),但是将任一分支合并到另一个分支会导致项目的“Publish location”设置被覆盖在目标分支中,这意味着我可能会意外地将开发代码发布到实时位置。
有没有办法让某些项目属性(在这种情况下,发布位置)从合并“免疫”,所以每个分支都保持它的设置?
编辑: 我的第一个想法是,如果有一些“配置”类型文件可以覆盖某些项目设置,我可以隐藏该文件,以便它不会被合并...但我找不到任何像这样的文件的引用。 / p>
我们使用TFS进行源代码管理。
答案 0 :(得分:0)
通过学习如何使用MSBuild Conditions来解决。
通过编辑.vbproj文件并将有问题的属性放入条件PropertyGroup,我可以自由地来回合并分支,并且根据.vbproj文件的目录(分支),它将使用一个价值或其他。
(要编辑项目文件的xml,右键单击解决方案资源管理器中的项目>卸载项目,然后右键单击>编辑App.vbproj。)
...
<PropertyGroup Condition ="$(MSBuildThisFileFullPath.Contains(\AppDev\App\App.vbproj))">
<AssemblyName>AppDev</AssemblyName>
<PublishUrl>http://server/client/AppDev/</PublishUrl>
</PropertyGroup>
<PropertyGroup Condition ="$(MSBuildThisFileFullPath.Contains(\AppLive\App\App.vbproj))">
<AssemblyName>App</AssemblyName>
<PublishUrl>http://server/client/App/</PublishUrl>
</PropertyGroup>
...