第一点可以通过简单的文本编辑器解决,该编辑器可以一次处理多个文件并查找/替换。只需打开其中的所有csproj,然后将字符串替换<Compile Include="Properties\AssemblyInfo.cs" />
为
<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自定义项目模板,但是我不确定是否值得努力。您应该由IMO编写测试,以代替进行检查。这将更加简单,结果实际上几乎相同。
UPD:关于编写测试以根据一些自定义规则检查解决方案/项目文件。基本上,sln / csproj格式非常简单,可以轻松解析。所以如果你想拥有SharedAssemblyInfo.cs
链接到每个项目-只需解析csproj并进行检查即可。然后将该检查程序放在构建服务器中,并在每个构建上运行它。我们目前正在使用这样的系统,编写该文件需要花费大约两天的时间,但是为我们节省了很多(我们有更复杂的规则和多解决方案项目,因此值得付出努力)。
我现在不会在这里详细介绍这种检查(不是很短),但是我将很快写有关它的博客文章-很有可能要到本周末。因此,如果您有兴趣-尽快查看我的博客:)
UPD: 在这里。