Merged
Conversation
…ms (dotnet#8870) Backport dotnet#8870 to vs17.7.
Fixes dotnet#8595 by storing the embedded-file zip in a temporary directory (instead of memory or binlog target directory) to avoid problems with file watchers.
In a recent profile of a graph construction, it was observed that a large amount of boxing was happening for ProjectElementSiblingEnumerable. This change simplifies how xml children are enumerated by adding an internal ChildrenEnumerable property which directly exposes the ProjectElementSiblingEnumerable which should avoid boxing, at least in some code paths (the public API makes it hard to avoid everywhere...). Additionally, a very common usage of enumerating children was to do Children.OfType<T> and wrap it in a ReadOnlyCollection<T>, so I introduced a GetChildrenOfType (and GetChildrenReversedOfType) method which exposes an ICollection<T> which does the same thing but without the boxing of ProjectElementSiblingEnumerable and without the OfType class. It's just 1 collection allocation.
Currently we turn off dynamic platform resolution for a whole solution if a single project in the solution is assigned a configuration. This is problematic as some projects are outside of the scope of the solution but still have certain targets that run on them that are architecture specific. These projects will build as the wrong architecture because no configuration is defined and no platform negotiation takes place. I removed the conditional that turns platform negotiation off on a sln level. The logic to turn this off on a project level is already in place through checking is a projectreference has setplatform appended to it. This will make sure no projects with configurations defined will be negotiated for as MSbuild adds setplatform metadata to projectreferences with configurations.
…-enumeration', 'backport/pr-8870-to-vs17.7' and 'dev/michaelshea/sln' into vs17.7
|
Hello! I noticed that you're targeting one of our servicing branches. Please consider updating the version. |
filipnavara
reviewed
Jul 23, 2023
| using var redirection = RedirectWritesToOriginalWriter(); | ||
|
|
||
| Write(kind); | ||
| Write(stream.Length); |
Member
There was a problem hiding this comment.
Note that stream.Length is long while the original code was writing down int. These are serialized differently and thus this breaks the binary format:
private void Write(int value)
{
BinaryWriterExtensions.Write7BitEncodedInt(binaryWriter, value);
}
private void Write(long value)
{
binaryWriter.Write(value);
}
Member
There was a problem hiding this comment.
Bad design on my part, should have named the overloads differently. Thanks so much for spotting this!
Member
There was a problem hiding this comment.
Original BinaryWriter also utilizes a lot of overloads. Your design just follows that, but it's easy to miss this type of bug.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Combination of #8971, #8885, #8847, and #8978.