版本控制CommonAssemblyInfo.cs和MSBuild

3
我在解决方案中的所有项目中都链接了一个CommonAssemblyInfo.cs文件,并通过我的rake/albacore脚本动态生成,但这个文件没有检入源代码控制。我还有一个CommonAssemblyInfo.cs.local文件,当没有ruby可用时使用,主要供开发人员使用。
是否可能有一个msbuild任务或其他任务,在尝试编译我的解决方案之前运行,将CommonAssemblyInfo.cs.local复制到CommonAssemblyInfo.cs中?我不喜欢必须知道并输入命令才能打开和构建Visual Studio中的解决方案。
更新:最终我使用了一个批处理文件作为解决方案范围的预构建事件,如此描述:Solution-wide pre-build event?,它会检查CommonAssemblyInfo.cs是否存在,如果不存在,则只需使用一个简单的批处理文件将CommonAssemblyInfo.cs.local复制到CommonAssemblyInfo.cs中。
2个回答

3
这是我最终采用的解决方案。
我让每个项目都链接到一个CommonAssemblyInfo.cs,这个文件会被我的构建脚本(rake + albacore)自动生成。
由于我不能将CommonAssemblyInfo.cs提交到源代码控制中,所以我创建了一个CommonAssemblyInfo.cs.local。
简单的解决方案:创建go.bat,将CommonAssemblyInfo.cs.local复制到CommonAssemblyInfo.cs,开发人员在第一次检出项目之前必须运行此bat文件,然后才能在VS中打开解决方案。
由于“纯粹”的政治原因,如果我这样做了,人们会对我进行“非标准”操作而不满意。下面是更复杂的解决方案:
我在解决方案中创建了一个名为PreBuild的项目,该项目是解决方案中每个项目都依赖的。这迫使构建顺序首先构建此项目。此项目包含一个预构建事件,其中调用以下批处理文件:
echo verifying CommonVersionInfo.cs exists
cd
IF NOT EXIST ..\..\..\CommonAssemblyInfo.cs COPY ..\..\..\CommonAssemblyInfo.cs.local ..\..\..\CommonAssemblyInfo.cs

因此,现在任何选择置身事外的开发人员都可以检出该项目,并愉快地在VS中打开它,完全不知道存在任何构建脚本。


0
你是在谈论使用VS IDE编译,还是通过团队构建进行编译?如果你是在谈论团队构建,那么你可以利用"AfterGet"事件来使用标准的"copy" msbuild任务。如果你是在谈论VS IDE,那么你仍然可以使用"copy" msbuild任务。

我在谈论VS IDE构建。我想要一个解决方案范围的预构建事件,我使用了这个实现:https://dev59.com/33E95IYBdhLWcg3wd9xK - James Thigpen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接