msbuild - 版本控制 CommonAssemblyInfo.cs 和 MSBuild

标签 msbuild versioning rake assemblyinfo albacore

所以我有一个 CommonAssemblyInfo.cs 链接到我的解决方案中的所有项目,它是由我的 rake/albacore 脚本动态生成的,它没有 checkin 源代码控制。

我还有一个 CommonAssemblyInfo.cs.local 供在没有可用的 ruby​​ 时使用,主要供开发人员使用。

在尝试编译我的解决方案之前,是否可以有一个 msbuild 任务或在任何其他项目编译之前运行的任务,这些任务会将 CommonAssemblyInfo.cs.local 复制到 CommonAssemblyInfo.cs?我讨厌必须有一个命令,你必须知道并键入才能在 Visual Studio 中打开和构建解决方案。

更新 所以我最终使用批处理文件作为解决方案范围的预构建事件,如下所述:Solution-wide pre-build event? ,它会检查 CommonAssemblyInfo.cs 是否存在,如果不存在,则仅使用一个简单的批处理文件将 CommonAssemblyInfo.cs.local 复制到 CommonAssemblyInfo.cs。

最佳答案

这是我最终得到的解决方案。

我将解决方案中的每个项目都链接到 CommonAssemblyInfo.cs,这是由我的构建脚本 (rake + albacore) 自动为我生成的。

由于我无法将 CommonAssemblyInfo.cs checkin 源代码管理,因此我创建了一个 CommonAssemblyInfo.cs.local。

简单的解决方案:创建 go.bat,它将 CommonAssemblyInfo.cs.local 复制到 CommonAssemblyInfo.cs,开发人员在 VS 中打开解决方案之前第一次检查项目时必须运行它。

出于纯粹的政治原因,如果我这样做了,人们就会对我做“非标准”的事情大发雷霆。复杂的解决方案如下:

我在名为 PreBuild 的解决方案中创建了一个项目,解决方案中的每个项目都依赖该项目。这强制构建顺序是首先构建该项目。该项目包含调用以下批处理文件的预生成事件:

echo verifying CommonVersionInfo.cs exists
cd
IF NOT EXIST ..\..\..\CommonAssemblyInfo.cs COPY ..\..\..\CommonAssemblyInfo.cs.local ..\..\..\CommonAssemblyInfo.cs

因此,现在任何选择将头脑埋在沙子里的开发人员都可以检查项目并在 VS 中愉快地打开它,而根本不知道任何构建脚本的存在。

关于msbuild - 版本控制 CommonAssemblyInfo.cs 和 MSBuild,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2930984/

相关文章:

c# - mscorlib 4.x 和 mscorlib 2.x 之间的 MSBuild 冲突

android - 如何使用 faSTLane for iOS/android 处理版本控制

java - google-api-client 和 google-api-services 之间的版本兼容性

c# - Visual Studio 2005 中的自动更新版本号 (C++/C#)

msbuild - 如何使用Albacore一次构建多个项目?

ruby - 在 OpenSUSE 上构建的鞋子 - Rake 错误

c# - 如何为 VS2012 C# 项目执行自定义构建步骤?

c# - 使用 MSBuild 进行 .Net Core 项目的 ILRepack

ruby-on-rails-4 - 在 Elastic Beanstalk 环境中运行 Rails rake 任务

msbuild - 如何在没有可编译代码的 C# 项目上使用 MSBuild