El primer punto podría resolverse con un simple editor de texto que podría manejar varios archivos a la vez y buscar/reemplazar. Sólo tiene que abrir toda su csproj en ella y reemplazar cadena <Compile Include="Properties\AssemblyInfo.cs" />
con
<Compile Include="..\SharedAssemblyInfo.cs">
<Link>Properties\SharedAssemblyInfo.cs</Link>
</Compile>
Alternativamente se podría escribir una utilidad de esa manera:
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);
}
En cuanto a la segunda pregunta ... Se puede echar un vistazo a Visual Studio custom project templates, pero no estoy seguro de que valga la pena el esfuerzo. Debería realizar una prueba de escritura IMO que verifique esto en su lugar. Será mucho más simple y el resultado es casi el mismo.
UPD: Acerca de las pruebas de escritura para verificar los archivos de solución/proyecto en comparación con algunas reglas personalizadas. Básicamente, el formato sln/csproj es lo suficientemente simple como para analizarse sin muchos esfuerzos. Entonces, si desea tener SharedAssemblyInfo.cs
vinculado en cada proyecto, simplemente analice los csproj y verifique eso. Luego, coloque el verificador en su servidor de compilación y ejecútelo en cada compilación. Tenemos dicho sistema funcionando actualmente y cuesta alrededor de dos días escribirlo, pero nos ahorró muchos más (tenemos reglas más sofisticadas y proyectos de soluciones múltiples, por lo que valió la pena el esfuerzo).
No voy a escribir acerca de esta verificación en detalle aquí ahora (no es tan corto), pero voy a escribir una publicación en el blog pronto, probablemente hasta el final de esta semana. Por lo tanto, si usted está interesado - sólo echa my blog pronto :)
UPD:Here que es.
práctica común es crear información ensamblaje único – VMAtm