相关疑难解决方法(0)

自动在Visual Studio c#项目中嵌入mercurial修订信息

原始问题

在构建我们的项目时,我希望将每个存储库的mercurial id嵌入到该存储库(库,应用程序或测试应用程序)的产品中.

我发现,如果您确切地知道构建他们正在使用的特定应用程序版本的内容,那么调试客户运行的应用程序将更加容易8个时区.因此,我们系统中的每个项目(应用程序或库)都实现了获取相关修订信息的方法.

我还发现能够查看应用程序是否已使用存储库中的干净(未修改)更改集进行编译非常有用.当存储库中存在未提交的更改时,'Hg id'会有用地在变更集ID中附加一个+,这样我们就可以轻松查看人们是否运行了干净或修改过的代码版本.

我目前的解决方案详述如下,并满足基本要求,但存在许多问题.

现行解决方案

目前,对于每个Visual Studio解决方案,我添加了以下"预构建事件命令行"命令:

cd $(ProjectDir)
HgID
Run Code Online (Sandbox Code Playgroud)

我还将HgID.bat文件添加到Project目录:

@echo off
type HgId.pre > HgId.cs

For /F "delims=" %%a in ('hg id') Do <nul >>HgID.cs set /p =            @"%%a"

echo ;                  >> HgId.cs
echo     }              >> HgId.cs
echo }                  >> HgId.cs
Run Code Online (Sandbox Code Playgroud)

以及HgId.pre文件,定义为:

namespace My.Namespace {
/// <summary> Auto generated Mercurial ID class. </summary>
internal class HgID {
    /// <summary> Mercurial version ID [+ is modified] [Named branch]</summary>
    public const string Version =
Run Code Online (Sandbox Code Playgroud)

当我建立我的应用程序时,将触发对所有库预生成事件,创建一个新的文件HgId.cs(没有版本控制下保持),并导致库重新编译与新的"汞ID" '版本'中的字符串.

当前解决方案的问题 …

c# mercurial build visual-studio-2008

54
推荐指数
3
解决办法
7701
查看次数

标签 统计

build ×1

c# ×1

mercurial ×1

visual-studio-2008 ×1