Process a project targeting multiple frameworks
Published 09 January 2020
If your project targets multiple frameworks with <TargetFrameworks>
property, it is recommended to create separate SmartAssembly projects for each target assembly.
Let's say you have a project targeting three different frameworks:
<!-- ProjectA.csproj --> <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFrameworks>netcoreapp3.1;net472;netstandard2.1</TargetFrameworks> </PropertyGroup> </Project>
For the project above you might want to create separate SmartAssembly projects, each pointing to the appropriate input assembly:
- ProjectA_netcoreapp3.1.saproj -
/ProjectA/bin/Release/netcoreapp3.1/ProjectA.dll
- ProjectA_net472.saproj -
/ProjectA/bin/Release/net472/ProjectA.dll
- ProjectA_netstandard2.1.saproj -
/ProjectA/bin/Release/netstandard2.1/ProjectA.dll
Then, you need to add the following code to your .csproj
file to point SmartAssembly MSBuild task to correct project for each target framework:
<!-- ProjectA.csproj --> <Project Sdk="Microsoft.NET.Sdk"> ... <Target Name="SetSmartAssemblyProjectPathForEachTarget" BeforeTargets="BuildWithSmartAssembly"> <PropertyGroup> <SmartAssemblyProjectFile>$(MSBuildProjectDirectory)\$(AssemblyName)_$(TargetFramework).saproj</SmartAssemblyProjectFile> </PropertyGroup> <Message Importance="High" Text="SmartAssembly project for '$(TargetFramework)' set to: $(SmartAssemblyProjectFile)" /> </Target> </Project>