Update Microsoft.CodeDom.Providers.DotNetCompilerPlatform - closes #59#62
Update Microsoft.CodeDom.Providers.DotNetCompilerPlatform - closes #59#62CZEMacLeod wants to merge 2 commits intomainfrom
Conversation
…on TargetFrameworkVersion
…ework and updated package versions.
|
@CZEMacLeod If you are running into problems with this idea.... it might be because that in non-crosstargeted projects, the Using these <!-- When doing greater than/less than comparisons between strings, MSBuild will try to parse the strings as Version objects and compare them as
such if the parse succeeds. -->
<Import Project="Sdk.targets" Sdk="Microsoft.NET.Sdk" />
<PropertyGroup Condition="'$(MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version)'=='' AND '$(TargetFrameworkIdentifier)' == '.NETFramework'">
<MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.7.2'" >4.1.0</MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version><!-- net 4.7.2+ -->
<MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.6.2' AND '$(MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version)' == '' " >3.11.0</MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version><!-- net 4.6.2, 4.7.2+ -->
<MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version Condition=" '$(_TargetFrameworkVersionWithoutV)' >= '4.5' AND '$(MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version)' == '' " >3.6.0</MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version><!-- net 4.5 / 4.6 / 4.7.2+ -->
</PropertyGroup>
Or potentially use the <!-- When doing greater than/less than comparisons between strings, MSBuild will try to parse the strings as Version objects and compare them as
such if the parse succeeds. -->
<ItemGroup Condition="'$(ExcludeSDKDefaultPackages)'=='false' AND '$(ApplySDKDefaultPackageVersions)'=='true'">
<PackageReference Update="Microsoft.Net.Compilers.Toolset" Version="$(MicrosoftNetCompilersToolset_Version)" Condition="'$(MicrosoftNetCompilersToolset_Version)'!=''"/>
<PackageReference Update="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" Version="$(MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version)" Condition="'$(MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version)'!=''" />
<PackageReference Update="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" Version="3.6.0" Condition="'$(MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version)'=='' AND '$(_TargetFrameworkVersionWithoutV)' >= '4.5'" />
<PackageReference Update="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" Version="3.11.0" Condition="'$(MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version)'=='' AND '$(_TargetFrameworkVersionWithoutV)' >= '4.6.2'" />
<PackageReference Update="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" Version="4.1.0" Condition="'$(MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version)'=='' AND '$(_TargetFrameworkVersionWithoutV)' >= '4.7.2'" />
</ItemGroup>
|
|
Hey @CZEMacLeod, I'm trying to use Microsoft.CodeDom.Providers.DotNetCompilerPlatform 4.1.0 in our .net 4.7.2 project, but unfortunately we can't as it appears to be controlled by MSBuild.SDK.SystemWeb forcing 3.6.0 as a dependency. Is there any chance this can be merged through and deployed out? |
For now - if you refer to the documentation you will see that there is a property that allows you to manually select a specific version of the package. This change simply updates the default version. <PropertyGroup>
<MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version>4.1.0</MicrosoftCodeDomProvidersDotNetCompilerPlatform_Version>
</PropertyGroup> |
|
Perfect, thank you very much! |
The default version of
Microsoft.CodeDom.Providers.DotNetCompilerPlatformnow depends on your target framework version, and will automatically move to 3.11.0 or 4.1.0 if possible, and fallback to the previous value of 3.6.0 otherwise.Closes #59, although this may need reworked when a better way to handle default versions is included based on #54 and #56.