.net Shared AssemblyInfo用于跨解决方案进行统一版本控制

tyky79it  于 2023-11-20  发布在  .NET
关注(0)|答案(4)|浏览(194)

我读过这个技巧:Shared assembly info in VS projects - JJameson's blog
基本上,这意味着创建一个SharedAssemblyInfo.cs,其中包含有关程序集的版本控制信息,并将此文件作为链接添加到解决方案的所有项目,因此实际文件仅驻留在磁盘上的一个位置。
我的问题涉及两种情况:
1.不使用此机制的现有解决方案:有没有一种方法可以轻松地将ShareAssemblyInfo添加到所有项目中?(假设我有一个包含50个项目的解决方案)。
1.当创建一个新的项目时,默认情况下会创建一个新的AssemblyInfo.cs。但是我想自动链接到SharedAssemblyInfo。
有没有解决的办法?一般的做法是什么?

ars1skjm

ars1skjm1#

在VS 2010中可以链接到一个共享的汇编信息文件。Ashish Jain有一篇关于它的很好的博客文章:Sharing assembly version across projects in a solution
在解决方案级别创建共享程序集信息文件后,他对从项目链接到该文件的说明如下:
1.右键单击您希望在其中添加共享程序集文件的项目,并选择Add -> Existing Item.
1.从解决方案文件夹中选择文件“SharedAssemblyInfo.cs”。
1.而不是添加,点击旁边的箭头添加,并点击“添加为链接”
1.将添加的链接文件与AssemblyInfo.cs一起向下拖动到同一文件夹中。
1.对要添加共享程序集文件的所有项目重复步骤1 - 4。
我试过这个,它工作。

7ajki6be

7ajki6be2#

第一点可以用简单的文本编辑器来解决,它可以同时处理多个文件并查找/替换。

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

字符串
或者,你可以写一个这样的实用程序:

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


至于第二个问题.你可以看看Visual Studio custom project templates,但我不确定它值得的努力.你应该IMO写测试,将检查这一点,而不是.这将是简单得多,结果实际上是几乎相同的.
UPD:关于编写测试以根据某些自定义规则检查解决方案/项目文件。基本上,sln/csproj格式足够简单,可以轻松解析。因此,如果您希望将SharedAssemblyInfo.cs链接到每个项目中-只需解析csproj并检查它,然后将检查器放在构建服务器中,并在每个构建上运行它,目前我们有这样系统,编写它大约需要两天时间但为我们节省了更多(我们有更复杂的规则和多解决方案项目,所以值得努力)。
我现在不会在这里详细地写这个检查(它并不短),但我很快就会写一篇关于它的博客文章-最有可能直到本周末。所以,如果你感兴趣-请尽快检查my blog:)

UPD:Here

展开查看全部
2ul0zpep

2ul0zpep3#

这不适用于同时具有C#和F#项目的解决方案。c#项目不能引用共享的f#文件,反之亦然。
在这种情况下,唯一的选择是创建一个单独的项目,并从其他项目中引用它

esbemjvw

esbemjvw4#

我创建了一个应用程序来自动增加文件版本。
1.下载Application
1.将以下行添加到预生成事件命令行
C:\temp\IncrementFileVersion.exe $(SolutionDir)\Properties\AssemblyInfo.cs构建项目为了保持简单,应用程序仅在出现错误时抛出消息,为了确认它工作正常,您需要检查“程序集信息”中的文件版本
注意事项:您必须在Visual studio中重新加载解决方案以获取“程序集信息”按钮来填充字段,但是您的输出文件将具有更新的版本。

相关问题