第一点可以通过简单的文本编辑器解决,该编辑器可以同时处理多个文件并查找/替换.只需打开里面所有的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 custom project templates 个,但我不确定它是否值得努力.您应该编写一个测试来判断这一点.这会简单得多,结果实际上几乎是一样的.
UPD:关于编写测试,根据一些自定义规则判断解决方案/项目文件.基本上,sln/csproj格式非常简单,无需付出太多努力即可解析.所以,如果你想让SharedAssemblyInfo.cs
个链接到每个项目中,只需解析csproj并判断它.然后将该判断器放在构建服务器中,并在每个构建上运行它.我们目前有这样的系统在工作,编写大约需要两天的时间,但节省了我们更多的时间(我们有更复杂的规则和多解决方案项目,所以值得付出努力).
我现在不会在这里详细地写这个判断(它不是那么短),但我很快就会写一篇关于它的博客文章-最有可能写到这个周末.因此,如果您感兴趣-请很快查看my blog:)
是的.