Skip to content

Commit e794f23

Browse files
committed
Properly emit AssemblyInfo even if GenerateAssemblyInfo=false
We were missing this since the SDK defaults the specific attributes to `true` only if the overall flag `GenerateAssemblyInfo` is `true`. We change that in our targets, but without forcing `GenerateAssemblyInfo=true`. This allows to turn off codegen, but still get the attributes as items. Fixes #407
1 parent 79bb2ba commit e794f23

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

src/ThisAssembly.AssemblyInfo/ThisAssembly.AssemblyInfo.targets

+28
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,34 @@
1010
<FundingPackageId Include="ThisAssembly.AssemblyInfo" />
1111
</ItemGroup>
1212

13+
<PropertyGroup Condition="'$(GenerateAssemblyInfo)' != 'true'">
14+
<!-- The SDK will not set these attributes to 'true' unless GenerateAssemblyInfo=true, so we must override that
15+
in order for the attributes to be collected anyways. Since GenerateAssemblyInfo=false, the actual codegen
16+
will not happen, so this default value is safe as we only depend on GetAssemblyAttributes, which is not
17+
conditioned to GenerateAssemblyInfo
18+
This is copied from https://github.com/dotnet/sdk/blob/main/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.GenerateAssemblyInfo.targets#L26-L44
19+
-->
20+
<GenerateAssemblyCompanyAttribute Condition="'$(GenerateAssemblyCompanyAttribute)' == ''">true</GenerateAssemblyCompanyAttribute>
21+
<GenerateAssemblyConfigurationAttribute Condition="'$(GenerateAssemblyConfigurationAttribute)' == ''">true</GenerateAssemblyConfigurationAttribute>
22+
<GenerateAssemblyCopyrightAttribute Condition="'$(GenerateAssemblyCopyrightAttribute)' == ''">true</GenerateAssemblyCopyrightAttribute>
23+
<GenerateAssemblyDescriptionAttribute Condition="'$(GenerateAssemblyDescriptionAttribute)' == ''">true</GenerateAssemblyDescriptionAttribute>
24+
<GenerateAssemblyFileVersionAttribute Condition="'$(GenerateAssemblyFileVersionAttribute)' == ''">true</GenerateAssemblyFileVersionAttribute>
25+
<GenerateAssemblyInformationalVersionAttribute Condition="'$(GenerateAssemblyInformationalVersionAttribute)' == ''">true</GenerateAssemblyInformationalVersionAttribute>
26+
<GenerateAssemblyTrademarkAttribute Condition="'$(GenerateAssemblyTrademarkAttribute)' == ''">true</GenerateAssemblyTrademarkAttribute>
27+
<GenerateAssemblyProductAttribute Condition="'$(GenerateAssemblyProductAttribute)' == ''">true</GenerateAssemblyProductAttribute>
28+
<GenerateAssemblyTitleAttribute Condition="'$(GenerateAssemblyTitleAttribute)' == ''">true</GenerateAssemblyTitleAttribute>
29+
<GenerateAssemblyVersionAttribute Condition="'$(GenerateAssemblyVersionAttribute)' == ''">true</GenerateAssemblyVersionAttribute>
30+
<GenerateRepositoryUrlAttribute Condition="'$(GenerateRepositoryUrlAttribute)' == '' and !('$(TargetFrameworkIdentifier)' == '.NETFramework' and $([MSBuild]::VersionLessThan($(TargetFrameworkVersion), 4.5)))">true</GenerateRepositoryUrlAttribute>
31+
<GenerateNeutralResourcesLanguageAttribute Condition="'$(GenerateNeutralResourcesLanguageAttribute)' == ''">true</GenerateNeutralResourcesLanguageAttribute>
32+
<GenerateAssemblyMetadataAttributes Condition="'$(GenerateAssemblyMetadataAttributes)' == ''">true</GenerateAssemblyMetadataAttributes>
33+
<IncludeSourceRevisionInInformationalVersion Condition="'$(IncludeSourceRevisionInInformationalVersion)' == ''">true</IncludeSourceRevisionInInformationalVersion>
34+
<GenerateInternalsVisibleToAttributes Condition="'$(GenerateInternalsVisibleToAttributes)' == ''">true</GenerateInternalsVisibleToAttributes>
35+
<GenerateRequiresPreviewFeaturesAttribute Condition="'$(GenerateRequiresPreviewFeaturesAttribute)' == '' and '$(IsNetCoreAppTargetingLatestTFM)' == 'true'">true</GenerateRequiresPreviewFeaturesAttribute>
36+
<GenerateTargetPlatformAttribute Condition="'$(GenerateTargetPlatformAttribute)' == ''">true</GenerateTargetPlatformAttribute>
37+
<GenerateSupportedOSPlatformAttribute Condition="'$(GenerateSupportedOSPlatformAttribute)' == ''">true</GenerateSupportedOSPlatformAttribute>
38+
<GenerateDisableRuntimeMarshallingAttribute Condition="'$(GenerateDisableRuntimeMarshallingAttribute)' == ''">true</GenerateDisableRuntimeMarshallingAttribute>
39+
</PropertyGroup>
40+
1341
<Target Name="PrepareAssemblyInfoConstants"
1442
BeforeTargets="PrepareConstants"
1543
DependsOnTargets="GetAssemblyAttributes">

src/ThisAssembly.Tests/ThisAssembly.Tests.csproj

+2
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
<TargetFramework>net8.0</TargetFramework>
66
<ThisAssemblyNamespace>ThisAssemblyTests</ThisAssemblyNamespace>
77
<ThisAssemblyVisibility>public</ThisAssemblyVisibility>
8+
<!-- Showcase we don't require the built-in assembly info generation -->
9+
<GenerateAssemblyInfo>false</GenerateAssemblyInfo>
810
<Multiline>
911
A Description
1012
with a newline and

0 commit comments

Comments
 (0)