<PropertyGroup> <AllowedTargetFrameworkVersion>v2.0</AllowedTargetFrameworkVersion> </PropertyGroup> <Target Name="AfterGet" > <CallTarget Targets="CheckTargetFrameworkVersions" /> </Target> <UsingTask AssemblyFile="$(MSBuildExtensionsPath)\MSBuildCommunityTasks\MSBuild.Community.Tasks.dll" TaskName="MSBuild.Community.Tasks.Xml.XmlQuery" /> <Target Name="CheckTargetFrameworkVersions" Condition=" '$(AllowedTargetFrameworkVersion)' != '' "> <Message Text="Allowed Target Framework Version is: $(AllowedTargetFrameworkVersion)" Importance="high" /> <CreateItem Include="$(SolutionRoot)\**\*.csproj"> <Output TaskParameter="Include" ItemName="ProjectFiles" /> </CreateItem> <Xml.XmlQuery NamespaceDefinitions="n=http://schemas.microsoft.com/developer/msbuild/2003" XmlFileName="%(ProjectFiles.FullPath)" XPath="/n:Project/n:PropertyGroup/n:TargetFrameworkVersion"> <Output TaskParameter="Values" ItemName="TargetFrameworkVersions" /> </Xml.XmlQuery> <Message Text="Found Target Framework Version: %(TargetFrameworkVersions._value)" Importance="low" /> <Error Condition="'%(TargetFrameworkVersions._value)' != '$(AllowedTargetFrameworkVersion)'" Text="Target Framework Version is not allowed: %(TargetFrameworkVersions._value). Allowed version: $(AllowedTargetFrameworkVersion)" /> </Target>