Remove `AssemblyMetadata(".NETFrameworkAssembly", "")` attributes (#89490)
authorMichal Strehovský <MichalStrehovsky@users.noreply.github.com>
Thu, 27 Jul 2023 14:55:19 +0000 (23:55 +0900)
committerGitHub <noreply@github.com>
Thu, 27 Jul 2023 14:55:19 +0000 (07:55 -0700)
* Remove `AssemblyMetadata(".NETFrameworkAssembly", "")` attributes

This is likely a .NET Native leftover that is currently (ironically) breaking .NET Native. This attribute indicates to the .NET Native compiler that the assembly can be trimmed.

We're currently setting this on assemblies that no longer carry RD.XML to make this safe. Without this attribute, the assembly will be treated like any other and not trimmed.

Fixes #44697.

* Delete mention of the attribute in docs

Co-authored-by: Jan Kotas <jkotas@microsoft.com>
docs/design/tools/illink/trimmed-assemblies.md
eng/versioning.targets
src/libraries/System.Private.CoreLib/src/ILLink/ILLink.LinkAttributes.Shared.xml
src/libraries/System.Private.CoreLib/src/Internal/AssemblyAttributes.cs

index 007d24a..bf2b927 100644 (file)
@@ -182,7 +182,6 @@ If there is a use case for specifying trimmable assemblies on the command-line,
 We will use `AssemblyMetadataAttribute` to specify `IsTrimmable` on an assembly, instead of introducing a new attribute. The existing attribute seems well-suited for this use case, as it is already similarly used to control servicing for framework assemblies, for example via:
 
 ```csharp
-[assembly: AssemblyMetadata(".NETFrameworkAssembly", "")]
 [assembly: AssemblyMetadata("Serviceable", "True")]
 [assembly: AssemblyMetadata("PreferInbox", "True")]
 ```
index 7746e94..72678ee 100644 (file)
@@ -8,14 +8,8 @@
     <Description Condition="'$(Description)' == ''">$(AssemblyName)</Description>
   </PropertyGroup>
 
-  <!-- Assembly metadata indicating that an assembly is a framework (as opposed to user) assembly:
-       Test projects need to not have this because of the way "IsFrameworkAssembly" APIs work to check this. -->
   <ItemGroup Condition="'$(IsTestProject)' != 'true' and '$(IsTestSupportProject)' != 'true'">
     <AssemblyAttribute Include="System.Reflection.AssemblyMetadata">
-      <_Parameter1>.NETFrameworkAssembly</_Parameter1>
-      <_Parameter2></_Parameter2>
-    </AssemblyAttribute>
-    <AssemblyAttribute Include="System.Reflection.AssemblyMetadata">
       <_Parameter1>Serviceable</_Parameter1>
       <_Parameter2>True</_Parameter2>
     </AssemblyAttribute>
index b3f72c0..adbcd6f 100644 (file)
     <type fullname="System.Reflection.AssemblyMetadataAttribute">
       <attribute internal="RemoveAttributeInstances">
         <argument type="System.Object">
-          <argument>.NETFrameworkAssembly</argument>
-        </argument>
-      </attribute>
-    </type>
-    <type fullname="System.Reflection.AssemblyMetadataAttribute">
-      <attribute internal="RemoveAttributeInstances">
-        <argument type="System.Object">
           <argument>RepositoryUrl</argument>
         </argument>
       </attribute>
index 2d36d0f..2809258 100644 (file)
@@ -12,7 +12,6 @@ using System.Resources;
 [assembly: DefaultDllImportSearchPaths(DllImportSearchPath.AssemblyDirectory | DllImportSearchPath.System32)]
 
 [assembly: AssemblyMetadata("Serviceable", "True")]
-[assembly: AssemblyMetadata(".NETFrameworkAssembly", "")]
 [assembly: AssemblyMetadata("IsTrimmable", "True")]
 
 [assembly: NeutralResourcesLanguage("en-US")]