Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Tags: jrdodds/msbuild

Tags

v17.1.0

Toggle v17.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Eliminate IDeepCloneable<T> (dotnet#7117)

Fixes dotnet#6176

Context
The props and items sent to loggers as part of ProjectStartedEventArgs are passed in special collections holding snapshots of props/items that are created lazily when a logger starts enumerating them. These props/items are guaranteed to be deep copies of the real props/items such that no modifications that a logger may make don't propagate back.

Changes Made
For props, the collection holds tuples of prop name and evaluated value. Both are strings so the concept of deep copying is implicit (strings are immutable). Similarly, for items we return TaskItem instances created over the original item, which guarantees the deep-copy semantics (TaskItems holds a copy of the metadata and a few strings). Consequentially, there is no need to explicitly deep-copy the props/items before enumeration and the IDeepCloneable<T> interface becomes unused.

As an additional code cleanup, ProjectPropertyInstanceEnumeratorProxy and ProjectItemInstanceEnumeratorProxy can easily be replaced with the Select LINQ operation and are thus not needed.

Here's a detailed analysis of the code that runs when enumerating props and items, without and with these changes:

Props
Before: When a logger calls GetEnumerator CopyOnReadEnumerable creates a list and populates it with the results of calling DeepClone on the props. During enumeration the iterator in ProjectPropertyInstanceEnumeratorProxy extracts the Name and EvaluatedValue and returns them to the logger.
After: When a logger calls GetEnumerator CopyOnReadEnumerable creates a list and populates it with [Name, EvaluatedValue] tuples, saving the intermediate step of cloning.

Items
Before: When a logger calls GetEnumerator CopyOnReadEnumerable creates a list and populates it with the results of calling DeepClone on the items. During enumeration the iterator in ProjectItemInstanceEnumeratorProxy creates new instances of TaskItem and returns them to the logger.
After: When a logger calls GetEnumerator CopyOnReadEnumerable creates a list and populates it with [ItemType, TaskItem] tuples, saving the intermediate step of cloning.

Semantically the old and new behaviors are equivalent. A snapshot of prop/items is made at the point where GetEnumerator is called.

Testing
Existing unit tests, some tests were modified.

v17.0.0

Toggle v17.0.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Final Branding For 17.0 GA (dotnet#6902)

* Final branding for 17.0 GA

* Move release branding to versionprefix line

v17.0.0-preview-21521-04

Toggle v17.0.0-preview-21521-04's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Final Branding For 17.0 GA (dotnet#6902)

* Final branding for 17.0 GA

* Move release branding to versionprefix line

v16.11.2

Toggle v16.11.2's commit message
Add copy marker to FileWrites unconditionally

Fixes dotnet#6917 by ensuring that the copy-marker file is _always_ added
to the FileWrites item if the copy-referenced-assemblies target runs
so that IncrementalClean never sees it as an 'orphan' file and then
deletes it.

v16.11.1

Toggle v16.11.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Merge pull request dotnet#6846 from AR-May/copycomplete-fix-backport

Skip Updating CopyComplete Marker When Not Necessary

v17.0.0-preview-21458-01

Toggle v17.0.0-preview-21458-01's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Update dependencies from https://github.com/nuget/nuget.client build …

…6.0.0.230 (dotnet#6814)

NuGet.Build.Tasks
 From Version 6.0.0-preview.4.220 -> To Version 6.0.0-preview.4.230

v17.0.0-preview-21378-03

Toggle v17.0.0-preview-21378-03's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Merge pull request dotnet#6683 from rainersigwald/64-bit-environment

Fixes dotnet#6681.

### Context

The change to make Visual Studio 64-bit means that projects loaded in Visual Studio get the 64-bit MSBuild, and other tools are more likely to be loading our API in a 64-bit process as well. That found this difference between the way projects are evaluated in `devenv.exe` and in `vcxprojReader.exe`.

### Changes Made

Find the VS root from the current assembly and then reconstruct the path to the appropriate MSBuild.exe based on that + the current process's bitness, ensuring that API consumers and MSBuild.exe/devenv.exe see the same MSBuildToolsPath.

### Testing

Manual overlay with a trivial API consumer.

v16.11.0

Toggle v16.11.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
16.11 Final Branding (dotnet#6656)

Co-authored-by: Rainer Sigwald <[email protected]>

v17.0.0-preview-21329-01

Toggle v17.0.0-preview-21329-01's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
Catch ArgumentException as well as BadImageFormatException when faili…

…ng because of libraries without resources (dotnet#6546)

v16.10.2

Toggle v16.10.2's commit message
Revert "Pulled in some external changes to Microsoft.Build.cs"

This reverts commit fe2c68f.