diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/AssemblySymbolLoader.cs b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/AssemblySymbolLoader.cs
index f90efb19f4ad..361937c6b18b 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/AssemblySymbolLoader.cs
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/AssemblySymbolLoader.cs
@@ -95,6 +95,8 @@ public void AddReferenceSearchPaths(params string[] paths)
///
public IReadOnlyList LoadAssemblies(params string[] paths)
{
+ _log.LogMessage(MessageImportance.Low, string.Format(Resources.LoadingAssemblies, string.Join(", ", paths)));
+
// First resolve all assemblies that are passed in and create metadata references out of them.
// Reference assemblies of the passed in assemblies that themselves are passed in, will be skipped to be resolved,
// as they are resolved as part of the loop below.
@@ -119,6 +121,8 @@ public void AddReferenceSearchPaths(params string[] paths)
///
public IReadOnlyList LoadAssembliesFromArchive(string archivePath, IReadOnlyList relativePaths)
{
+ _log.LogMessage(MessageImportance.Low, string.Format(Resources.LoadingAssembliesFromArchive, string.Join(", ", relativePaths), archivePath));
+
using FileStream stream = File.OpenRead(archivePath);
using ZipArchive zipFile = new(stream);
@@ -144,7 +148,8 @@ public void AddReferenceSearchPaths(params string[] paths)
string name = Path.GetFileName(relativePaths[i]);
if (!_loadedAssemblies.TryGetValue(name, out MetadataReference? metadataReference))
{
- metadataReference = CreateAndAddReferenceToCompilation(name, memoryStream, fileNames);
+ string rootAssemblyDisplayString = string.Format(Resources.RootAssemblyFromPackageDisplayString, relativePaths[i], archivePath);
+ metadataReference = CreateAndAddReferenceToCompilation(name, rootAssemblyDisplayString, memoryStream, fileNames);
}
metadataReferences[i] = metadataReference;
@@ -170,6 +175,8 @@ public void AddReferenceSearchPaths(params string[] paths)
///
public IAssemblySymbol? LoadAssembly(string path)
{
+ _log.LogMessage(MessageImportance.Low, string.Format(Resources.LoadingAssembly, path));
+
MetadataReference metadataReference = CreateOrGetMetadataReferenceFromPath(path);
IAssemblySymbol? assemblySymbol = _cSharpCompilation.GetAssemblyOrModuleSymbol(metadataReference) as IAssemblySymbol;
LogCompilationDiagnostics();
@@ -180,6 +187,8 @@ public void AddReferenceSearchPaths(params string[] paths)
///
public IAssemblySymbol? LoadAssembly(string name, Stream stream)
{
+ _log.LogMessage(MessageImportance.Low, string.Format(Resources.LoadingAssemblyFromStream, name));
+
if (stream.Position >= stream.Length)
{
throw new ArgumentException(Resources.StreamPositionGreaterThanLength, nameof(stream));
@@ -187,7 +196,8 @@ public void AddReferenceSearchPaths(params string[] paths)
if (!_loadedAssemblies.TryGetValue(name, out MetadataReference? metadataReference))
{
- metadataReference = CreateAndAddReferenceToCompilation(name, stream);
+ string rootAssemblyDisplayString = string.Format(Resources.RootAssemblyDisplayString, name);
+ metadataReference = CreateAndAddReferenceToCompilation(name, rootAssemblyDisplayString, stream);
}
IAssemblySymbol? assemblySymbol = _cSharpCompilation.GetAssemblyOrModuleSymbol(metadataReference) as IAssemblySymbol;
@@ -318,13 +328,14 @@ private MetadataReference CreateOrGetMetadataReferenceFromPath(string path, Immu
if (!_loadedAssemblies.TryGetValue(name, out MetadataReference? metadataReference))
{
using FileStream stream = File.OpenRead(path);
- metadataReference = CreateAndAddReferenceToCompilation(name, stream, referenceAssemblyNamesToIgnore);
+ string rootAssemblyDisplayString = string.Format(Resources.RootAssemblyDisplayString, path);
+ metadataReference = CreateAndAddReferenceToCompilation(name, rootAssemblyDisplayString, stream, referenceAssemblyNamesToIgnore);
}
return metadataReference;
}
- private MetadataReference CreateAndAddReferenceToCompilation(string name, Stream fileStream, ImmutableHashSet? referenceAssemblyNamesToIgnore = null)
+ private MetadataReference CreateAndAddReferenceToCompilation(string assemblyName, string rootAssemblyDisplayString, Stream fileStream, ImmutableHashSet? referenceAssemblyNamesToIgnore = null, string? referenceeAssemblyName = null)
{
// If we need to resolve references we can't reuse the same stream after creating the metadata
// reference from it as Roslyn closes it. So instead we use PEReader and get the bytes
@@ -333,51 +344,60 @@ private MetadataReference CreateAndAddReferenceToCompilation(string name, Stream
if (!reader.HasMetadata)
{
- throw new ArgumentException(string.Format(Resources.ProvidedStreamDoesNotHaveMetadata, name));
+ throw new ArgumentException(string.Format(Resources.ProvidedStreamDoesNotHaveMetadata, assemblyName));
}
PEMemoryBlock image = reader.GetEntireImage();
MetadataReference metadataReference = MetadataReference.CreateFromImage(image.GetContent());
- _loadedAssemblies.Add(name, metadataReference);
+ _loadedAssemblies.Add(assemblyName, metadataReference);
_cSharpCompilation = _cSharpCompilation.AddReferences([ metadataReference ]);
+ if (referenceeAssemblyName is null)
+ {
+ _log.LogMessage(MessageImportance.Low, string.Format(Resources.AssemblyLoaded, assemblyName));
+ }
+ else
+ {
+ _log.LogMessage(MessageImportance.Low, string.Format(Resources.AssemblyReferenceLoaded, assemblyName, referenceeAssemblyName));
+ }
+
if (_resolveReferences)
{
- ResolveReferences(reader, referenceAssemblyNamesToIgnore);
+ ResolveReferences(reader, assemblyName, rootAssemblyDisplayString, referenceAssemblyNamesToIgnore);
}
return metadataReference;
}
- private void ResolveReferences(PEReader peReader, ImmutableHashSet? referenceAssemblyNamesToIgnore = null)
+ private void ResolveReferences(PEReader peReader, string assemblyName, string rootAssemblyDisplayString, ImmutableHashSet? referenceAssemblyNamesToIgnore = null)
{
MetadataReader reader = peReader.GetMetadataReader();
- foreach (AssemblyReferenceHandle handle in reader.AssemblyReferences)
+ foreach (AssemblyReferenceHandle assemblyReferenceHandle in reader.AssemblyReferences)
{
- AssemblyReference reference = reader.GetAssemblyReference(handle);
- string nameWithoutExtension = reader.GetString(reference.Name);
+ AssemblyReference assemblyReference = reader.GetAssemblyReference(assemblyReferenceHandle);
+ string assemblyReferenceNameWithoutExtension = reader.GetString(assemblyReference.Name);
// Skip assemblies that should never get loaded because they are purely internal
- if (s_assembliesToIgnore.Contains(nameWithoutExtension))
+ if (s_assembliesToIgnore.Contains(assemblyReferenceNameWithoutExtension))
continue;
- string name = nameWithoutExtension + ".dll";
+ string assemblyReferenceName = assemblyReferenceNameWithoutExtension + ".dll";
// Skip reference assemblies that are loaded later.
- if (referenceAssemblyNamesToIgnore != null && referenceAssemblyNamesToIgnore.Contains(name))
+ if (referenceAssemblyNamesToIgnore != null && referenceAssemblyNamesToIgnore.Contains(assemblyReferenceName))
continue;
// If the assembly reference is already loaded, don't do anything.
- if (_loadedAssemblies.ContainsKey(name))
+ if (_loadedAssemblies.ContainsKey(assemblyReferenceName))
continue;
// First we try to see if a reference path for this specific assembly was passed in directly, and if so
// we use that.
- if (_referencePathFiles.TryGetValue(name, out string? fullReferencePath))
+ if (_referencePathFiles.TryGetValue(assemblyReferenceName, out string? fullReferencePath))
{
// TODO: add version check and add a warning if it doesn't match?
- using FileStream resolvedStream = File.OpenRead(Path.Combine(fullReferencePath, name));
- CreateAndAddReferenceToCompilation(name, resolvedStream, referenceAssemblyNamesToIgnore);
+ using FileStream resolvedStream = File.OpenRead(Path.Combine(fullReferencePath, assemblyReferenceName));
+ CreateAndAddReferenceToCompilation(assemblyReferenceName, rootAssemblyDisplayString, resolvedStream, referenceAssemblyNamesToIgnore, assemblyName);
}
// If we can't find a specific reference path for the dependency, then we look in the folders where the
// rest of the reference paths are located to see if we can find the dependency there.
@@ -387,12 +407,12 @@ private void ResolveReferences(PEReader peReader, ImmutableHashSet? refe
foreach (string referencePathDirectory in _referencePathDirectories)
{
- string potentialPath = Path.Combine(referencePathDirectory, name);
+ string potentialPath = Path.Combine(referencePathDirectory, assemblyReferenceName);
if (File.Exists(potentialPath))
{
// TODO: add version check and add a warning if it doesn't match?
using FileStream resolvedStream = File.OpenRead(potentialPath);
- CreateAndAddReferenceToCompilation(name, resolvedStream, referenceAssemblyNamesToIgnore);
+ CreateAndAddReferenceToCompilation(assemblyReferenceName, rootAssemblyDisplayString, resolvedStream, referenceAssemblyNamesToIgnore, assemblyName);
found = true;
break;
}
@@ -400,7 +420,8 @@ private void ResolveReferences(PEReader peReader, ImmutableHashSet? refe
if (!found)
{
- _log.LogWarning(AssemblyReferenceNotFoundErrorCode, string.Format(Resources.CouldNotResolveReference, name));
+ _log.LogWarning(AssemblyReferenceNotFoundErrorCode,
+ string.Format(Resources.CouldNotResolveReference, assemblyReferenceName, rootAssemblyDisplayString));
}
}
}
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/Resources.resx b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/Resources.resx
index d7fa05dbf47f..3b7c96ac9169 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/Resources.resx
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/Resources.resx
@@ -117,8 +117,26 @@
System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089
+
+ Assembly '{0}' loaded.
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+
- Could not resolve reference '{0}' in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+ Loading assemblies '{0}'.
+
+
+ Loading assemblies '{0}' ({1}).
+
+
+ Loading assembly '{0}'.
+
+
+ Loading assembly '{0}' from stream.Could not find matching assembly: '{0}' in any of the search directories.
@@ -129,6 +147,12 @@
Provided stream for assembly '{0}' doesn't have any metadata to read. from.
+
+ '{0}'
+
+
+ '{0}' ({1})
+
Should not be null and contain at least one element.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.cs.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.cs.xlf
index 324c9c461f20..d1c7c7404f5f 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.cs.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.cs.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- V žádném z uvedených adresářů vyhledávání se nepovedlo přeložit odkaz {0}.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
Poskytnutý datový proud pro sestavení {0} nemá žádná metadata pro čtení.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.Nesmí být null a obsahovat alespoň jeden element.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.de.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.de.xlf
index b1adc5cbceef..a93cc3476f27 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.de.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.de.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- Der Verweis "{0}" konnte in keinem der angegebenen Suchverzeichnisse aufgelöst werden.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
Der angegebene Datenstrom für die Assembly "{0}" enthält keine Metadaten, aus denen gelesen werden kann.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.Darf nicht NULL sein und muss mindestens ein Element enthalten.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.es.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.es.xlf
index 42b08421cccc..2a50d71c6dec 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.es.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.es.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- No se pudo resolver la referencia "{0}" en ninguno de los directorios de búsqueda proporcionados.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
La secuencia proporcionada para el ensamblado "{0}" no tiene metadatos que leer.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.No debe ser nulo y debe contener al menos un elemento.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.fr.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.fr.xlf
index ac4050130c1f..081bfef494a5 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.fr.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.fr.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- Impossible de résoudre la référence «{0}» dans l’un des répertoires de recherche fournis.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
Le flux fourni pour l’assembly '{0}' n’a aucune métadonnée à lire. De.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.Ne doit pas être null et contenir au moins un élément.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.it.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.it.xlf
index c5579a2600b7..7a4ec8b1e58e 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.it.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.it.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- Non è stato possibile risolvere il riferimento '{0}' in nessuna delle directory di ricerca specificate.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
Il flusso specificato per l'assembly '{0}' non contiene metadati da leggere.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.Non deve essere null e deve contenere almeno un elemento.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ja.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ja.xlf
index 22a041a1889b..de55a1d8b387 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ja.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ja.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- 指定された検索ディレクトリ内の参照 '{0}' を解決できませんでした。
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
アセンブリ '{0}' に指定されたストリームに読み取るメタデータがありません。送信者。
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.null および 1 つ以上の要素が含まれている必要があります。
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ko.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ko.xlf
index 47b0726a528f..977964897dc6 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ko.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ko.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- 제공된 검색 디렉터리에서 참조 '{0}'(을)를 확인할 수 없습니다.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
어셈블리 '{0}'에 대해 제공된 스트림에 읽을 메타데이터가 없습니다.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.Null이 아니어야 하고 요소를 하나 이상 포함해야 합니다.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.pl.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.pl.xlf
index 2505ca72d789..3cd49ba6d927 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.pl.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.pl.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- Nie można rozpoznać odwołania "{0}" w żadnym z podanych katalogów wyszukiwania.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
Podany strumień dla zestawu "{0}" nie ma metadanych, z których można odczytywać.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.Nie może mieć wartości null i powinna zawierać co najmniej jeden element.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.pt-BR.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.pt-BR.xlf
index 427e22d95228..d127c006417c 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.pt-BR.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.pt-BR.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- Não foi possível resolver a referência '{0}' em nenhum dos diretórios de pesquisa fornecidos.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
O fluxo fornecido para o assembly '{0}' não tem metadados para ler. desde.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.Não deve ser nulo e conter pelo menos um elemento.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ru.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ru.xlf
index dc077b51df3a..100bb13e8e96 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ru.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.ru.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- Не удалось разрешить ссылку "{0}" ни в одном из указанных каталогов поиска.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
Указанный поток для сборки "{0}" не имеет метаданных для чтения. От.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.Не должно иметь значение NULL и содержать хотя бы один элемент.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.tr.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.tr.xlf
index de40e451b609..9964bd5a9b6c 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.tr.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.tr.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- Sağlanan arama dizinlerinin hiçbirinde '{0}' başvurusu çözümlenemedi.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
'{0}' bütünleştirilmiş kodu için sağlanan akış, okunacak herhangi bir meta veriye sahip değil.
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.Null olmamalı ve en az bir öğe içermelidir.
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.zh-Hans.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.zh-Hans.xlf
index d00e131209cf..b068b1b0fd6a 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.zh-Hans.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.zh-Hans.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- 无法在任何提供的搜索目录中解析引用“{0}”。
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
为程序集“{0}”提供的流没有任何可供读取的元数据。
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.不应为 null,并且应至少包含一个元素。
diff --git a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.zh-Hant.xlf b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.zh-Hant.xlf
index f1dfc166bbe6..397fbb34524a 100644
--- a/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.zh-Hant.xlf
+++ b/src/Compatibility/Microsoft.DotNet.ApiSymbolExtensions/xlf/Resources.zh-Hant.xlf
@@ -2,9 +2,39 @@
+
+ Assembly '{0}' loaded.
+ Assembly '{0}' loaded.
+
+
+
+ Assembly '{0}' referenced by '{1}' loaded.
+ Assembly '{0}' referenced by '{1}' loaded.
+
+
- Could not resolve reference '{0}' in any of the provided search directories.
- 無法在任何提供的搜尋目錄中解析參考 '{0}'。
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+ Could not resolve reference '{0}' directly or transitively referenced by {1} in any of the provided search directories.
+
+
+
+ Loading assemblies '{0}'.
+ Loading assemblies '{0}'.
+
+
+
+ Loading assemblies '{0}' ({1}).
+ Loading assemblies '{0}' ({1}).
+
+
+
+ Loading assembly '{0}'.
+ Loading assembly '{0}'.
+
+
+
+ Loading assembly '{0}' from stream.
+ Loading assembly '{0}' from stream.
@@ -22,6 +52,16 @@
為元件 '{0}' 提供的資料流程沒有任何可從中讀取的中繼資料。
+
+ '{0}'
+ '{0}'
+
+
+
+ '{0}' ({1})
+ '{0}' ({1})
+
+ Should not be null and contain at least one element.不應為 Null 且必須包含至少一個元素。
diff --git a/test/Microsoft.DotNet.ApiSymbolExtensions.Tests/AssemblySymbolLoaderTests.cs b/test/Microsoft.DotNet.ApiSymbolExtensions.Tests/AssemblySymbolLoaderTests.cs
index 35886f8cbf05..940c5a4622f7 100644
--- a/test/Microsoft.DotNet.ApiSymbolExtensions.Tests/AssemblySymbolLoaderTests.cs
+++ b/test/Microsoft.DotNet.ApiSymbolExtensions.Tests/AssemblySymbolLoaderTests.cs
@@ -5,6 +5,7 @@
using System.Collections.Concurrent;
using System.Reflection;
+using System.Text.RegularExpressions;
using Microsoft.CodeAnalysis;
using Microsoft.DotNet.Cli.Utils;
@@ -264,7 +265,8 @@ public void LoadAssemblyResolveReferences_WarnsWhenEnabled(bool resolveReference
var assetInfo = GetSimpleTestAsset();
TestLog log = new();
AssemblySymbolLoader loader = new(log, resolveAssemblyReferences: resolveReferences);
- loader.LoadAssembly(Path.Combine(assetInfo.OutputDirectory, assetInfo.TestAsset.TestProject.Name + ".dll"));
+ string assemblyPath = Path.Combine(assetInfo.OutputDirectory, assetInfo.TestAsset.TestProject.Name + ".dll");
+ loader.LoadAssembly(assemblyPath);
if (resolveReferences)
{
@@ -277,8 +279,8 @@ public void LoadAssemblyResolveReferences_WarnsWhenEnabled(bool resolveReference
expectedReference = "mscorlib.dll";
}
- List expected = [$"{AssemblySymbolLoader.AssemblyReferenceNotFoundErrorCode} Could not resolve reference '{expectedReference}' in any of the provided search directories."];
- Assert.Equal(expected, log.Warnings, StringComparer.CurrentCultureIgnoreCase);
+ Assert.Single(log.Warnings);
+ Assert.Matches($"CP1002.*?'{Regex.Escape(expectedReference)}'.*?'{Regex.Escape(assemblyPath)}'.*", log.Warnings.Single());
}
else
{