-
Notifications
You must be signed in to change notification settings - Fork 1.6k
/
Copy pathMetadataLoadContext.xml
365 lines (337 loc) · 25.6 KB
/
MetadataLoadContext.xml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
<Type Name="MetadataLoadContext" FullName="System.Reflection.MetadataLoadContext">
<TypeSignature Language="C#" Value="public sealed class MetadataLoadContext : IDisposable" />
<TypeSignature Language="ILAsm" Value=".class public auto ansi sealed beforefieldinit MetadataLoadContext extends System.Object implements class System.IDisposable" />
<TypeSignature Language="DocId" Value="T:System.Reflection.MetadataLoadContext" />
<TypeSignature Language="VB.NET" Value="Public NotInheritable Class MetadataLoadContext
Implements IDisposable" />
<TypeSignature Language="F#" Value="type MetadataLoadContext = class
 interface IDisposable" />
<TypeSignature Language="C++ CLI" Value="public ref class MetadataLoadContext sealed : IDisposable" />
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>4.0.0.0</AssemblyVersion>
<AssemblyVersion>4.0.1.0</AssemblyVersion>
<AssemblyVersion>5.0.0.0</AssemblyVersion>
<AssemblyVersion>6.0.0.0</AssemblyVersion>
<AssemblyVersion>7.0.0.0</AssemblyVersion>
<AssemblyVersion>8.0.0.0</AssemblyVersion>
<AssemblyVersion>8.0.0.1</AssemblyVersion>
<AssemblyVersion>9.0.0.0</AssemblyVersion>
<AssemblyVersion>9.0.0.1</AssemblyVersion>
<AssemblyVersion>9.0.0.2</AssemblyVersion>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Base>
<BaseTypeName>System.Object</BaseTypeName>
</Base>
<Interfaces>
<Interface>
<InterfaceName>System.IDisposable</InterfaceName>
</Interface>
</Interfaces>
<Attributes>
<Attribute FrameworkAlternate="net-10.0-pp;net-8.0-pp;net-9.0-pp">
<AttributeName Language="C#">[System.Runtime.CompilerServices.Nullable(0)]</AttributeName>
<AttributeName Language="F#">[<System.Runtime.CompilerServices.Nullable(0)>]</AttributeName>
</Attribute>
</Attributes>
<Docs>
<summary>Represents a closed universe of Type objects loaded for inspection-only purposes. Each MetadataLoadContext can have its own binding rules and is isolated from all other MetadataLoadContexts.</summary>
<remarks>
<format type="text/markdown"><.
]]></format>
</remarks>
</Docs>
<Members>
<Member MemberName=".ctor">
<MemberSignature Language="C#" Value="public MetadataLoadContext (System.Reflection.MetadataAssemblyResolver resolver, string? coreAssemblyName = default);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig specialname rtspecialname instance void .ctor(class System.Reflection.MetadataAssemblyResolver resolver, string coreAssemblyName) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Reflection.MetadataLoadContext.#ctor(System.Reflection.MetadataAssemblyResolver,System.String)" />
<MemberSignature Language="VB.NET" Value="Public Sub New (resolver As MetadataAssemblyResolver, Optional coreAssemblyName As String = Nothing)" />
<MemberSignature Language="F#" Value="new System.Reflection.MetadataLoadContext : System.Reflection.MetadataAssemblyResolver * string -> System.Reflection.MetadataLoadContext" Usage="new System.Reflection.MetadataLoadContext (resolver, coreAssemblyName)" />
<MemberType>Constructor</MemberType>
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Parameters>
<Parameter Name="resolver" Type="System.Reflection.MetadataAssemblyResolver" />
<Parameter Name="coreAssemblyName" Type="System.String">
<Attributes>
<Attribute FrameworkAlternate="net-10.0-pp;net-8.0-pp;net-9.0-pp">
<AttributeName Language="C#">[System.Runtime.CompilerServices.Nullable(2)]</AttributeName>
<AttributeName Language="F#">[<System.Runtime.CompilerServices.Nullable(2)>]</AttributeName>
</Attribute>
</Attributes>
</Parameter>
</Parameters>
<Docs>
<param name="resolver">A <see cref="T:System.Reflection.MetadataAssemblyResolver" /> instance.</param>
<param name="coreAssemblyName">The name of the assembly that contains the core types such as <see cref="T:System.Object" />. Typically, this would be "mscorlib".</param>
<summary>Creates a new <see cref="T:System.Reflection.MetadataLoadContext" /> object.</summary>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="CoreAssembly">
<MemberSignature Language="C#" Value="public System.Reflection.Assembly? CoreAssembly { get; }" />
<MemberSignature Language="ILAsm" Value=".property instance class System.Reflection.Assembly CoreAssembly" />
<MemberSignature Language="DocId" Value="P:System.Reflection.MetadataLoadContext.CoreAssembly" />
<MemberSignature Language="VB.NET" Value="Public ReadOnly Property CoreAssembly As Assembly" />
<MemberSignature Language="F#" Value="member this.CoreAssembly : System.Reflection.Assembly" Usage="System.Reflection.MetadataLoadContext.CoreAssembly" />
<MemberSignature Language="C++ CLI" Value="public:
 property System::Reflection::Assembly ^ CoreAssembly { System::Reflection::Assembly ^ get(); };" />
<MemberType>Property</MemberType>
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<Attributes>
<Attribute FrameworkAlternate="net-10.0-pp;net-8.0-pp;net-9.0-pp">
<AttributeName Language="C#">[System.Runtime.CompilerServices.Nullable(2)]</AttributeName>
<AttributeName Language="F#">[<System.Runtime.CompilerServices.Nullable(2)>]</AttributeName>
</Attribute>
</Attributes>
<ReturnValue>
<ReturnType>System.Reflection.Assembly</ReturnType>
</ReturnValue>
<Docs>
<summary>Gets or sets the assembly that denotes the "system assembly" that houses the well-known types such as <see cref="T:System.Int32" />.</summary>
<value>An <see cref="T:System.Reflection.Assembly" /> instance.</value>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
The core assembly is treated differently than other assemblies because references to these well-known types do not include the assembly reference, unlike normal types.
Typically, this assembly is named "mscorlib" or "netstandard". If the core assembly cannot be found, the value will be `null`, and many other reflection methods, including those that parse method signatures, will throw an exception.
The `CoreAssembly` is determined by passing the `coreAssemblyName` parameter passed to the <xref:System.Reflection.MetadataAssemblyResolver> constructor
to the <xref:System.Reflection.MetadataAssemblyResolver.Resolve%2A?displayProperty=nameWithType> method.
If no `coreAssemblyName` argument was specified in the constructor of <xref:System.Reflection.MetadataLoadContext>, then default values are used, including "mscorlib", "System.Runtime" and "netstandard".
The designated core assembly does not need to contain the core types directly. It can type forward them to other assemblies. Thus, it is perfectly permissible to use the mscorlib facade as the designated core assembly.
Note that <xref:System.Runtime> is not an ideal core assembly because it excludes some of the interop-related pseudo-custom attribute types such as <xref:System.Runtime.InteropServices.DllImportAttribute>. However, it can serve if you have no interest in those attributes. The CustomAttributes API will skip those attributes if the core assembly does not include the necessary types.
The core assembly is not loaded until necessary. The following APIs do not trigger the search for the core assembly:
* <xref:System.Reflection.MetadataLoadContext.LoadFromStream%2A?displayProperty=nameWithType>
* <xref:System.Reflection.MetadataLoadContext.LoadFromAssemblyPath%2A?displayProperty=nameWithType>
* <xref:System.Reflection.MetadataLoadContext.LoadFromByteArray%2A?displayProperty=nameWithType>
* <xref:System.Reflection.Assembly.GetName%2A?displayProperty=nameWithType>
* <xref:System.Reflection.Assembly.FullName?displayProperty=nameWithType>
* <xref:System.Reflection.Assembly.GetReferencedAssemblies%2A?displayProperty=nameWithType>
* <xref:System.Reflection.Assembly.GetTypes%2A?displayProperty=nameWithType>
* <xref:System.Reflection.Assembly.DefinedTypes?displayProperty=nameWithType>
* <xref:System.Reflection.Assembly.GetExportedTypes%2A?displayProperty=nameWithType>
* <xref:System.Reflection.Assembly.GetForwardedTypes%2A?displayProperty=nameWithType>
* <xref:System.Reflection.Assembly.GetType(System.String,System.Boolean,System.Boolean)?displayProperty=nameWithType>
* <xref:System.Type.Name?displayProperty=nameWithType>
* <xref:System.Type.FullName?displayProperty=nameWithType>
* <xref:System.Type.AssemblyQualifiedName?displayProperty=nameWithType>
If a core assembly cannot be found or if the core assembly is missing types, this will affect the behavior of the <xref:System.Reflection.MetadataLoadContext> as follows:
* APIs that need to parse signatures or typespecs and return the results as <xref:System.Type> objects will throw an exception. For example:
* <xref:System.Reflection.MethodInfo.ReturnType?displayProperty=nameWithType>
* <xref:System.Reflection.MethodBase.GetParameters%2A?displayProperty=nameWithType>
* <xref:System.Type.BaseType?displayProperty=nameWithType>
* <xref:System.Type.GetInterfaces%2A?displayProperty=nameWithType>
* APIs that need to compare types to well-known core types will not throw an exception, and the comparison will evaluate to `false`. For example, if you do not specify a core assembly, <xref:System.Type.IsPrimitive> will return `false` for everything, even types named <xref:System.Int32>. Similarly, <xref:System.Type.GetTypeCode%2A?displayProperty=nameWithType> will return <xref:System.TypeCode.Object> for everything.
* If a metadata entity sets flags that surface as a pseudo-custom attribute, and the core assembly does not contain the pseudo-custom attribute type, the necessary constructor or any of the parameter types of the constructor, the <xref:System.Reflection.MetadataLoadContext> will not throw. It will omit the pseudo-custom attribute from the list of returned attributes.
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="Dispose">
<MemberSignature Language="C#" Value="public void Dispose ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig newslot virtual instance void Dispose() cil managed" />
<MemberSignature Language="DocId" Value="M:System.Reflection.MetadataLoadContext.Dispose" />
<MemberSignature Language="VB.NET" Value="Public Sub Dispose ()" />
<MemberSignature Language="F#" Value="abstract member Dispose : unit -> unit
override this.Dispose : unit -> unit" Usage="metadataLoadContext.Dispose " />
<MemberSignature Language="C++ CLI" Value="public:
 virtual void Dispose();" />
<MemberType>Method</MemberType>
<Implements>
<InterfaceMember>M:System.IDisposable.Dispose</InterfaceMember>
</Implements>
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Void</ReturnType>
</ReturnValue>
<Parameters />
<Docs>
<summary>Releases any native resources (such as file locks on assembly files). </summary>
<remarks>
<format type="text/markdown"><![CDATA[
After disposal, it is not safe to use any <xref:System.Reflection.Assembly> objects dispensed by the <xref:System.Reflection.MetadataLoadContext> or any reflection objects dispensed by those <xref:System.Reflection.Assembly> objects.
Though objects provided by the <xref:System.Reflection.MetadataLoadContext> strive to throw an <xref:System.ObjectDisposedException>, this is not guaranteed.
Some APIs may return fixed or previously cached data. Accessing objects *during* a <xref:System.Reflection.MetadataLoadContext.Dispose%2A> method call may result in an unmanaged access violation and failfast.
]]></format>
</remarks>
</Docs>
</Member>
<Member MemberName="GetAssemblies">
<MemberSignature Language="C#" Value="public System.Collections.Generic.IEnumerable<System.Reflection.Assembly> GetAssemblies ();" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Collections.Generic.IEnumerable`1<class System.Reflection.Assembly> GetAssemblies() cil managed" />
<MemberSignature Language="DocId" Value="M:System.Reflection.MetadataLoadContext.GetAssemblies" />
<MemberSignature Language="VB.NET" Value="Public Function GetAssemblies () As IEnumerable(Of Assembly)" />
<MemberSignature Language="F#" Value="member this.GetAssemblies : unit -> seq<System.Reflection.Assembly>" Usage="metadataLoadContext.GetAssemblies " />
<MemberSignature Language="C++ CLI" Value="public:
 System::Collections::Generic::IEnumerable<System::Reflection::Assembly ^> ^ GetAssemblies();" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Collections.Generic.IEnumerable<System.Reflection.Assembly></ReturnType>
</ReturnValue>
<Parameters />
<Docs>
<summary>Return an atomic snapshot of the assemblies that have been loaded into the <see cref="T:System.Reflection.MetadataLoadContext" />.</summary>
<returns>An enumerable collection of <see cref="T:System.Reflection.Assembly" /> objects.</returns>
<remarks>To be added.</remarks>
</Docs>
</Member>
<Member MemberName="LoadFromAssemblyName">
<MemberSignature Language="C#" Value="public System.Reflection.Assembly LoadFromAssemblyName (System.Reflection.AssemblyName assemblyName);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Reflection.Assembly LoadFromAssemblyName(class System.Reflection.AssemblyName assemblyName) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Reflection.MetadataLoadContext.LoadFromAssemblyName(System.Reflection.AssemblyName)" />
<MemberSignature Language="VB.NET" Value="Public Function LoadFromAssemblyName (assemblyName As AssemblyName) As Assembly" />
<MemberSignature Language="F#" Value="member this.LoadFromAssemblyName : System.Reflection.AssemblyName -> System.Reflection.Assembly" Usage="metadataLoadContext.LoadFromAssemblyName assemblyName" />
<MemberSignature Language="C++ CLI" Value="public:
 System::Reflection::Assembly ^ LoadFromAssemblyName(System::Reflection::AssemblyName ^ assemblyName);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Reflection.Assembly</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="assemblyName" Type="System.Reflection.AssemblyName" />
</Parameters>
<Docs>
<param name="assemblyName">An <see cref="T:System.Reflection.AssemblyName" /> instance.</param>
<summary>Resolves the supplied assembly name to an assembly. If an assembly was previously bound to this name, that assembly is returned. Otherwise, the <see cref="T:System.Reflection.MetadataLoadContext" /> calls the specified <see cref="T:System.Reflection.MetadataAssemblyResolver" />.</summary>
<returns>An <see cref="T:System.Reflection.Assembly" /> instance.</returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
Note that the behavior of this method matches the behavior of the <xref:System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName%2A?displayProperty=nameWithType> resolve event, but does not match the behavior of <xref:System.Reflection.Assembly.ReflectionOnlyLoad%2A?displayProperty=nameWithType>. (The latter gives up without raising its resolve event.)
]]></format>
</remarks>
<exception cref="T:System.IO.FileNotFoundException">The resolver returns <see langword="null" />.</exception>
</Docs>
</Member>
<Member MemberName="LoadFromAssemblyName">
<MemberSignature Language="C#" Value="public System.Reflection.Assembly LoadFromAssemblyName (string assemblyName);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Reflection.Assembly LoadFromAssemblyName(string assemblyName) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Reflection.MetadataLoadContext.LoadFromAssemblyName(System.String)" />
<MemberSignature Language="VB.NET" Value="Public Function LoadFromAssemblyName (assemblyName As String) As Assembly" />
<MemberSignature Language="F#" Value="member this.LoadFromAssemblyName : string -> System.Reflection.Assembly" Usage="metadataLoadContext.LoadFromAssemblyName assemblyName" />
<MemberSignature Language="C++ CLI" Value="public:
 System::Reflection::Assembly ^ LoadFromAssemblyName(System::String ^ assemblyName);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Reflection.Assembly</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="assemblyName" Type="System.String" />
</Parameters>
<Docs>
<param name="assemblyName">A <see cref="T:System.String" /> representing the assembly name.</param>
<summary>Resolves the supplied assembly name to an assembly. If an assembly was previously bound to this name, that assembly is returned. Otherwise, the <see cref="T:System.Reflection.MetadataLoadContext" /> calls the specified <see cref="T:System.Reflection.MetadataAssemblyResolver" />.</summary>
<returns>An <see cref="T:System.Reflection.Assembly" /> instance.</returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
Note that the behavior of this method matches the behavior of the <xref:System.Runtime.Loader.AssemblyLoadContext.LoadFromAssemblyName%2A?displayProperty=nameWithType> resolve event but does not match the behavior of <xref:System.Reflection.Assembly.ReflectionOnlyLoad%2A?displayProperty=nameWithType>. (The latter gives up without raising its resolve event.)
]]></format>
</remarks>
<exception cref="T:System.IO.FileNotFoundException">The resolver returns <see langword="null" />.</exception>
</Docs>
</Member>
<Member MemberName="LoadFromAssemblyPath">
<MemberSignature Language="C#" Value="public System.Reflection.Assembly LoadFromAssemblyPath (string assemblyPath);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Reflection.Assembly LoadFromAssemblyPath(string assemblyPath) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Reflection.MetadataLoadContext.LoadFromAssemblyPath(System.String)" />
<MemberSignature Language="VB.NET" Value="Public Function LoadFromAssemblyPath (assemblyPath As String) As Assembly" />
<MemberSignature Language="F#" Value="member this.LoadFromAssemblyPath : string -> System.Reflection.Assembly" Usage="metadataLoadContext.LoadFromAssemblyPath assemblyPath" />
<MemberSignature Language="C++ CLI" Value="public:
 System::Reflection::Assembly ^ LoadFromAssemblyPath(System::String ^ assemblyPath);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Reflection.Assembly</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="assemblyPath" Type="System.String" />
</Parameters>
<Docs>
<param name="assemblyPath">A <see cref="T:System.String" /> representing the path to the assembly.</param>
<summary>Loads an assembly from a specific path on the disk and binds its assembly name to it in the <see cref="T:System.Reflection.MetadataLoadContext" />. If a prior assembly with the same name was already loaded into the <see cref="T:System.Reflection.MetadataLoadContext" />, the prior assembly will be returned.</summary>
<returns>An <see cref="T:System.Reflection.Assembly" /> instance.</returns>
<remarks>To be added.</remarks>
<exception cref="T:System.IO.FileLoadException">The two assemblies do not have the same Mvid.</exception>
</Docs>
</Member>
<Member MemberName="LoadFromByteArray">
<MemberSignature Language="C#" Value="public System.Reflection.Assembly LoadFromByteArray (byte[] assembly);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Reflection.Assembly LoadFromByteArray(unsigned int8[] assembly) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Reflection.MetadataLoadContext.LoadFromByteArray(System.Byte[])" />
<MemberSignature Language="VB.NET" Value="Public Function LoadFromByteArray (assembly As Byte()) As Assembly" />
<MemberSignature Language="F#" Value="member this.LoadFromByteArray : byte[] -> System.Reflection.Assembly" Usage="metadataLoadContext.LoadFromByteArray assembly" />
<MemberSignature Language="C++ CLI" Value="public:
 System::Reflection::Assembly ^ LoadFromByteArray(cli::array <System::Byte> ^ assembly);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Reflection.Assembly</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="assembly" Type="System.Byte[]" />
</Parameters>
<Docs>
<param name="assembly">A byte array holding an assembly.</param>
<summary>Loads an assembly from a byte array and binds its assembly name to it in the <see cref="T:System.Reflection.MetadataLoadContext" />. If a prior assembly with the same name was already loaded into the <see cref="T:System.Reflection.MetadataLoadContext" />, the prior assembly will be returned.</summary>
<returns>An <see cref="T:System.Reflection.Assembly" /> instance.</returns>
<remarks>To be added.</remarks>
<exception cref="T:System.IO.FileLoadException">The two assemblies do not have the same Mvid.</exception>
</Docs>
</Member>
<Member MemberName="LoadFromStream">
<MemberSignature Language="C#" Value="public System.Reflection.Assembly LoadFromStream (System.IO.Stream assembly);" />
<MemberSignature Language="ILAsm" Value=".method public hidebysig instance class System.Reflection.Assembly LoadFromStream(class System.IO.Stream assembly) cil managed" />
<MemberSignature Language="DocId" Value="M:System.Reflection.MetadataLoadContext.LoadFromStream(System.IO.Stream)" />
<MemberSignature Language="VB.NET" Value="Public Function LoadFromStream (assembly As Stream) As Assembly" />
<MemberSignature Language="F#" Value="member this.LoadFromStream : System.IO.Stream -> System.Reflection.Assembly" Usage="metadataLoadContext.LoadFromStream assembly" />
<MemberSignature Language="C++ CLI" Value="public:
 System::Reflection::Assembly ^ LoadFromStream(System::IO::Stream ^ assembly);" />
<MemberType>Method</MemberType>
<AssemblyInfo>
<AssemblyName>System.Reflection.MetadataLoadContext</AssemblyName>
<AssemblyVersion>10.0.0.0</AssemblyVersion>
</AssemblyInfo>
<ReturnValue>
<ReturnType>System.Reflection.Assembly</ReturnType>
</ReturnValue>
<Parameters>
<Parameter Name="assembly" Type="System.IO.Stream" />
</Parameters>
<Docs>
<param name="assembly">A <see cref="T:System.IO.Stream" /> holding an assembly.</param>
<summary>Loads an assembly from a stream and binds its assembly name to it in the <see cref="T:System.Reflection.MetadataLoadContext" />. If a prior assembly with the same name was already loaded into the <see cref="T:System.Reflection.MetadataLoadContext" />, the prior assembly will be returned.</summary>
<returns>The loaded assembly.</returns>
<remarks>
<format type="text/markdown"><![CDATA[
## Remarks
> [!IMPORTANT]
> The <xref:System.Reflection.MetadataLoadContext> takes ownership of the <xref:System.IO.Stream> passed into this method. The original owner must not mutate its position, dispose the <xref:System.IO.Stream>, or assume that its position will stay unchanged.
]]></format>
</remarks>
<exception cref="T:System.IO.FileLoadException">The two assemblies do not have the same Mvid.</exception>
</Docs>
</Member>
</Members>
</Type>