Apply an MSBuild effect across multiple projects in a solution

110 Views Asked by At

I've got the AssemblyInfo feature of the MSBuild Extension Pack working, so that my assemblies description and file version have the details I want in the code below ...

But I want to apply this effect across every project in a 50+ project solution!

So how can I work on all the projects ... without going through each project adding the code?

<PropertyGroup>
  <CoreCompileDependsOn>
    $(CoreCompileDependsOn);
    AssemblyDefaults;
  </CoreCompileDependsOn>
</PropertyGroup>
<PropertyGroup>
 <ExtensionTasksPath>
 $(MSBuildProjectDirectory)\..\packages\MSBuild.Extension.Pack.1.4.0\tools\net40\
 </ExtensionTasksPath>
</PropertyGroup>
<Import Project="$(ExtensionTasksPath)\MSBuild.ExtensionPack.tasks" />
<Target Name="AssemblyDefaults">
  <ItemGroup>
    <AssemblyInfoFiles Include=".\Properties\AssemblyInfo.cs" />
  </ItemGroup>
  <AssemblyInfo 
    AssemblyInfoFiles="@(AssemblyInfoFiles)" 
    AssemblyProduct="Compiled on: $([System.Environment]::MachineName)" 
    AssemblyDescription="Compiled at: $([System.DateTime]::Now)" 
    AssemblyFileBuildNumberType="DateString" 
    AssemblyFileBuildNumberFormat="MMdd" 
    AssemblyFileRevisionType="DateString" 
    AssemblyFileRevisionFormat="HHmm" />
</Target>
1

There are 1 best solutions below

0
On

You could create a common assembly file for all the projects and edit the csproj files to refer to the common assembly info file like:

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

More information can be found at Shared AssemblyInfo for uniform versioning across the solution