共享AssemblyInfo,用于整个解决scheme的统一版本控制

我读过这个技术: http : //blogs.msdn.com/b/jjameson/archive/2009/04/03/shared-assembly-info-in-visual-studio-projects.aspx

基本上,它意味着创build一个SharedAssemblyInfo.cs与有关程序集的版本信息,并将该文件作为链接添加到解决scheme的所有项目,所以实际文件只驻留在磁盘上的一个位置。

我的问题涉及两种情况:

  1. 现有的解决scheme,不使用这种机制:有没有办法轻松地将ShareAssemblyInfo添加到所有项目? (可以说我有50个项目的解决scheme)。

  2. 在创build新项目时,默认情况下会创build一个新的AssemblyInfo.cs。 不过,我想自动链接到SharedAssemblyInfo。

有没有解决scheme? 常用的做法是什么?

第一点可以用简单的文本编辑器解决,可以一次处理多个文件并查找/replace。 只要打开你的所有csproj,并用<Compile Include="Properties\AssemblyInfo.cs" />replacestring

 <Compile Include="..\SharedAssemblyInfo.cs"> <Link>Properties\SharedAssemblyInfo.cs</Link> </Compile> 

或者你可以写一个这样的工具:

 var files = Directory.GetFiles(yourSolutionDir, "*.csproj", SearchOption.AllDirectories); foreach (var f in files) { string contents = File.ReadAllText(f); string result = contents.Replace("<Compile Include=\"Properties\\AssemblyInfo.cs\" />", putSecondStringHere_ItIsJustTooLong); // :) File.WriteAllText(f, contents); } 

至于第二个问题…你可以看看Visual Studio自定义项目模板 ,但我不知道这是值得的努力。 你应该写IMOtesting,而不是检查这个。 这将会简单得多,结果实际上几乎是一样的。

UPD:关于根据一些自定义规则编写用于检查解决scheme/项目文件的testing。 基本上,sln / csproj格式足够简单,可以毫不费力地parsing。 所以如果你想把SharedAssemblyInfo.cs链接到每个项目中 – 只需parsingcsproj并检查。 然后把这个检查器放到你的构build服务器上,并在每个构build中运行它。 目前我们有这样的系统工作,花费大约两天的时间写下来,但是为我们节省了很多(我们有更复杂的规则和多解决scheme,所以这是值得的)。

我现在不会在这里详细地写这个检查(不是那么简短),但是我很快就会写博客文章 – 很可能直到本周末。 所以,如果你有兴趣 – 只要检查我的博客即将:)

UPD: 在这里 。

可以链接到VS 2010中的共享程序集信息文件。Ashish Jain有一篇很好的博客文章: 在解决scheme中跨项目共享程序集版本 。

在解决scheme级别创build共享程序集信息文件后,他从项目链接到它的指令是:

  1. 右键单击要添加共享程序集文件的项目,然后selectAdd – > Existing Item …

  2. 从解决scheme文件夹中select文件“SharedAssemblyInfo.cs”。

  3. 点击“添加”旁边的箭头,然后点击“添加为链接”

  4. 将添加的链接文件拖放到同一文件夹中的AssemblyInfo.cs旁边。

  5. 对于您想添加共享程序集文件的所有项目,重复步骤1 – 4。

我试过这个,它的工作原理。

我创build了一个应用程序来自动增加文件版本。

  1. 下载应用程序
  2. 添加以下行预构build事件命令行

C:\ Temp \ IncrementFileVersion.exe $(SolutionDir)\ Properties \ AssemblyInfo.cs生成项目为了保持简单,应用程序只在抛出错误时抛出消息,以确认它工作正常,您将需要检查文件版本“汇编信息”

注意:您将不得不在Visual Studio中重新加载“Assembly Information”button的解决scheme来填充字段,但是您的输出文件将具有更新的版本。

对于build议和请求,请发送电子邮件至telson_alva@yahoo.com