Merge branch 'main' into darc-main-4695b3fa-36aa-4b92-8cf0-bb8a3dbe4ce1

This commit is contained in:
Jan Krivanek 2023-06-14 18:58:06 +02:00 коммит произвёл GitHub
Родитель e1164e82e2 e37f52b337
Коммит 3e4d334cdb
Не найден ключ, соответствующий данной подписи
Идентификатор ключа GPG: 4AEE18F83AFDEB23
19 изменённых файлов: 112 добавлений и 48 удалений

Просмотреть файл

@ -33,9 +33,9 @@
<Uri>https://github.com/nuget/nuget.client</Uri>
<Sha>3ee1febd1dd53a958afa55b97d7b90f1eb0d0fcd</Sha>
</Dependency>
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.7.0-3.23303.1">
<Dependency Name="Microsoft.Net.Compilers.Toolset" Version="4.7.0-3.23311.1">
<Uri>https://github.com/dotnet/roslyn</Uri>
<Sha>a08e9e1f8fb99e332fd3254a4268466e590ce57a</Sha>
<Sha>4cbfec964e59687cd9cc8601df42b936c9c06f63</Sha>
<SourceBuild RepoName="roslyn" ManagedOnly="true" />
</Dependency>
<Dependency Name="Microsoft.DotNet.XUnitExtensions" Version="6.0.0-beta.23301.1">

Просмотреть файл

@ -0,0 +1,42 @@
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
using Microsoft.Build.Shared;
using Microsoft.Build.UnitTests;
using Xunit;
namespace Microsoft.Build.Evaluation;
public sealed class UsedUninitializedProperties_Tests
{
[Fact]
public void Basics()
{
UsedUninitializedProperties props = new();
Assert.False(props.TryGetPropertyElementLocation("Hello", out IElementLocation? elementLocation));
Assert.Null(elementLocation);
props.RemoveProperty("Hello");
IElementLocation location1 = new MockElementLocation("File1");
IElementLocation location2 = new MockElementLocation("File2");
props.TryAdd("Hello", location1);
props.TryAdd("Hello", location2);
Assert.True(props.TryGetPropertyElementLocation("Hello", out elementLocation));
Assert.Same(location1, elementLocation);
Assert.True(props.TryGetPropertyElementLocation("Hello", out elementLocation));
Assert.Same(location1, elementLocation);
props.RemoveProperty("Hello");
Assert.False(props.TryGetPropertyElementLocation("Hello", out elementLocation));
Assert.Null(elementLocation);
props.RemoveProperty("Hello");
}
}

Просмотреть файл

@ -1316,12 +1316,12 @@ namespace Microsoft.Build.Evaluation
{
// Is the property we are currently setting in the list of properties which have been used but not initialized
IElementLocation elementWhichUsedProperty;
bool isPropertyInList = _expander.UsedUninitializedProperties.Properties.TryGetValue(propertyElement.Name, out elementWhichUsedProperty);
bool isPropertyInList = _expander.UsedUninitializedProperties.TryGetPropertyElementLocation(propertyElement.Name, out elementWhichUsedProperty);
if (isPropertyInList)
{
// Once we are going to warn for a property once, remove it from the list so we do not add it again.
_expander.UsedUninitializedProperties.Properties.Remove(propertyElement.Name);
_expander.UsedUninitializedProperties.RemoveProperty(propertyElement.Name);
_evaluationLoggingContext.LogWarning(null, new BuildEventFileInfo(propertyElement.Location), "UsedUninitializedProperty", propertyElement.Name, elementWhichUsedProperty.LocationString);
}
}

Просмотреть файл

@ -1521,18 +1521,16 @@ namespace Microsoft.Build.Evaluation
// We also do not want to add the property to the list if the environment variable is not set, also we do not want to add the property to the list if we are currently
// evaluating a condition because a common pattern for msbuild projects is to see if the property evaluates to empty and then set a value as this would cause a considerable number of false positives. <A Condition="'$(A)' == ''">default</A>
//
// Another pattern used is where a property concatonates with other values, <a>$(a);something</a> however we do not want to add the a element to the list because again this would make a number of
// Another pattern used is where a property concatenates with other values, <a>$(a);something</a> however we do not want to add the a element to the list because again this would make a number of
// false positives. Therefore we check to see what element we are currently evaluating and if it is the same as our property we do not add the property to the list.
if (usedUninitializedProperties.Warn && usedUninitializedProperties.CurrentlyEvaluatingPropertyElementName != null)
{
// Check to see if the property name does not match the property we are currently evaluating, note the property we are currently evaluating in the element name, this means no $( or )
if (!MSBuildNameIgnoreCaseComparer.Default.Equals(usedUninitializedProperties.CurrentlyEvaluatingPropertyElementName, propertyName, startIndex, endIndex - startIndex + 1))
{
string propertyTrimed = propertyName.Substring(startIndex, endIndex - startIndex + 1);
if (!usedUninitializedProperties.Properties.ContainsKey(propertyTrimed))
{
usedUninitializedProperties.Properties.Add(propertyTrimed, elementLocation);
}
usedUninitializedProperties.TryAdd(
propertyName: propertyName.Substring(startIndex, endIndex - startIndex + 1),
elementLocation);
}
}
@ -5279,26 +5277,45 @@ namespace Microsoft.Build.Evaluation
}
}
#nullable enable
/// <summary>
/// This class wraps information about properties which have been used before they are initialized.
/// </summary>
internal class UsedUninitializedProperties
internal sealed class UsedUninitializedProperties
{
/// <summary>
/// This class wraps information about properties which have been used before they are initialized.
/// Lazily allocated collection of properties and the element which used them.
/// </summary>
internal UsedUninitializedProperties()
private Dictionary<string, IElementLocation>? _properties;
internal void TryAdd(string propertyName, IElementLocation elementLocation)
{
Properties = new Dictionary<string, IElementLocation>(StringComparer.OrdinalIgnoreCase);
if (_properties is null)
{
_properties = new(StringComparer.OrdinalIgnoreCase);
}
else if (_properties.ContainsKey(propertyName))
{
return;
}
_properties.Add(propertyName, elementLocation);
}
/// <summary>
/// Hash set of properties which have been used before being initialized.
/// </summary>
internal IDictionary<string, IElementLocation> Properties
internal bool TryGetPropertyElementLocation(string propertyName, [NotNullWhen(returnValue: true)] out IElementLocation? elementLocation)
{
get;
set;
if (_properties is null)
{
elementLocation = null;
return false;
}
return _properties.TryGetValue(propertyName, out elementLocation);
}
internal void RemoveProperty(string propertyName)
{
_properties?.Remove(propertyName);
}
/// <summary>
@ -5313,7 +5330,7 @@ namespace Microsoft.Build.Evaluation
/// <summary>
/// What is the currently evaluating property element, this is so that we do not add a un initialized property if we are evaluating that property.
/// </summary>
internal string CurrentlyEvaluatingPropertyElementName
internal string? CurrentlyEvaluatingPropertyElementName
{
get;
set;

Просмотреть файл

@ -1844,6 +1844,11 @@ elementFormDefault="qualified">
<xs:documentation><!-- _locID_text="EnableDefaultItems" _locComment="" -->Defaults to true, and if set to false will disable all default item globs.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IsAotCompatible" type="msb:boolean" substitutionGroup="msb:Property">
<xs:annotation>
<xs:documentation><!-- _locID_text="IsAotCompatible" _locComment="" -->Indicates whether a class library is compatible with native AOT. Setting to true will enable analyzers for trimming, single file, and AOT.</xs:documentation>
</xs:annotation>
</xs:element>
<xs:element name="IsWebBootstrapper" type="msb:StringPropertyType" substitutionGroup="msb:Property"/>
<xs:element name="JCPA" type="msb:StringPropertyType" substitutionGroup="msb:Property"/>
<xs:element name="Keyword" type="msb:StringPropertyType" substitutionGroup="msb:Property"/>

Просмотреть файл

@ -1166,7 +1166,7 @@
</data>
<data name="GenerateResource.BinaryFormatterUse">
<value>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</value>
More information: https://aka.ms/msbuild/net8-binaryformatter</value>
<comment>{StrBegin="MSB3825: "}</comment>
</data>

4
src/Tasks/Resources/xlf/Strings.cs.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.de.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.es.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.fr.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.it.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.ja.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.ko.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.pl.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.pt-BR.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.ru.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.tr.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.zh-Hans.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">

4
src/Tasks/Resources/xlf/Strings.zh-Hant.xlf сгенерированный
Просмотреть файл

@ -1046,9 +1046,9 @@
</trans-unit>
<trans-unit id="GenerateResource.BinaryFormatterUse">
<source>MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</source>
More information: https://aka.ms/msbuild/net8-binaryformatter</source>
<target state="new">MSB3825: Resource "{0}" of type "{1}" is deserialized via BinaryFormatter at runtime. BinaryFormatter is deprecated due to possible security risks and will be removed with .NET 9. If you wish to continue using it, set property "GenerateResourceWarnOnBinaryFormatterUse" to false.
More information: https://learn.microsoft.com/dotnet/standard/serialization/binaryformatter-security-guide</target>
More information: https://aka.ms/msbuild/net8-binaryformatter</target>
<note>{StrBegin="MSB3825: "}</note>
</trans-unit>
<trans-unit id="GenerateResource.CoreSupportsLimitedScenarios">