Skip to content

Commit

Permalink
Merge pull request #9648 from dotnet-maestro-bot/merge/vs17.9-to-main
Browse files Browse the repository at this point in the history
[automated] Merge branch 'vs17.9' => 'main'
  • Loading branch information
JanKrivanek authored Jan 18, 2024
2 parents f9b862a + 35a2a40 commit 6e97308
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 7 deletions.
6 changes: 4 additions & 2 deletions src/Build.UnitTests/BackEnd/TaskHostTaskComplete_Tests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ public void TestConstructors()
new FileAccessData(
ReportedFileOperation.CreateFile,
RequestedAccess.Read,
0,
0,
processId: 123,
id: 1,
correlationId: 0,
error: 0,
DesiredAccess.GENERIC_READ,
FlagsAndAttributes.FILE_ATTRIBUTE_NORMAL,
"foo",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -173,6 +173,8 @@ public override void HandleFileAccess(FileAccessData fileAccessData) => _fileAcc
(Experimental.FileAccess.ReportedFileOperation)fileAccessData.Operation,
(Experimental.FileAccess.RequestedAccess)fileAccessData.RequestedAccess,
fileAccessData.ProcessId,
fileAccessData.Id,
fileAccessData.CorrelationId,
fileAccessData.Error,
(Experimental.FileAccess.DesiredAccess)fileAccessData.DesiredAccess,
(Experimental.FileAccess.FlagsAndAttributes)fileAccessData.FlagsAndAttributes,
Expand Down
29 changes: 29 additions & 0 deletions src/Build/CompatibilitySuppressions.xml
Original file line number Diff line number Diff line change
Expand Up @@ -260,4 +260,33 @@
<Right>ref/net8.0/Microsoft.Build.dll</Right>
<IsBaselineSuppression>true</IsBaselineSuppression>
</Suppression>
<!-- Changes to the Experimental namespace are considered non-breaking, and this ctor should be used only internally, not by plugin code. -->
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Microsoft.Build.Experimental.FileAccess.FileAccessData.#ctor(Microsoft.Build.Experimental.FileAccess.ReportedFileOperation,Microsoft.Build.Experimental.FileAccess.RequestedAccess,System.UInt32,System.UInt32,Microsoft.Build.Experimental.FileAccess.DesiredAccess,Microsoft.Build.Experimental.FileAccess.FlagsAndAttributes,System.String,System.String,System.Boolean)</Target>
<Left>lib/net472/Microsoft.Build.dll</Left>
<Right>lib/net472/Microsoft.Build.dll</Right>
<IsBaselineSuppression>true</IsBaselineSuppression>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Microsoft.Build.Experimental.FileAccess.FileAccessData.#ctor(Microsoft.Build.Experimental.FileAccess.ReportedFileOperation,Microsoft.Build.Experimental.FileAccess.RequestedAccess,System.UInt32,System.UInt32,Microsoft.Build.Experimental.FileAccess.DesiredAccess,Microsoft.Build.Experimental.FileAccess.FlagsAndAttributes,System.String,System.String,System.Boolean)</Target>
<Left>lib/net8.0/Microsoft.Build.dll</Left>
<Right>lib/net8.0/Microsoft.Build.dll</Right>
<IsBaselineSuppression>true</IsBaselineSuppression>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Microsoft.Build.Experimental.FileAccess.FileAccessData.#ctor(Microsoft.Build.Experimental.FileAccess.ReportedFileOperation,Microsoft.Build.Experimental.FileAccess.RequestedAccess,System.UInt32,System.UInt32,Microsoft.Build.Experimental.FileAccess.DesiredAccess,Microsoft.Build.Experimental.FileAccess.FlagsAndAttributes,System.String,System.String,System.Boolean)</Target>
<Left>ref/net472/Microsoft.Build.dll</Left>
<Right>ref/net472/Microsoft.Build.dll</Right>
<IsBaselineSuppression>true</IsBaselineSuppression>
</Suppression>
<Suppression>
<DiagnosticId>CP0002</DiagnosticId>
<Target>M:Microsoft.Build.Experimental.FileAccess.FileAccessData.#ctor(Microsoft.Build.Experimental.FileAccess.ReportedFileOperation,Microsoft.Build.Experimental.FileAccess.RequestedAccess,System.UInt32,System.UInt32,Microsoft.Build.Experimental.FileAccess.DesiredAccess,Microsoft.Build.Experimental.FileAccess.FlagsAndAttributes,System.String,System.String,System.Boolean)</Target>
<Left>ref/net8.0/Microsoft.Build.dll</Left>
<Right>ref/net8.0/Microsoft.Build.dll</Right>
<IsBaselineSuppression>true</IsBaselineSuppression>
</Suppression>
</Suppressions>
27 changes: 25 additions & 2 deletions src/Build/FileAccess/FileAccessData.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@
// The .NET Foundation licenses this file to you under the MIT license.

using System;

using Microsoft.Build.BackEnd;

namespace Microsoft.Build.Experimental.FileAccess
Expand All @@ -17,6 +16,8 @@ public struct FileAccessData
private ReportedFileOperation _operation;
private RequestedAccess _requestedAccess;
private uint _processId;
private uint _id;
private uint _correlationId;
private uint _error;
private DesiredAccess _desiredAccess;
private FlagsAndAttributes _flagsAndAttributes;
Expand All @@ -28,6 +29,8 @@ public FileAccessData(
ReportedFileOperation operation,
RequestedAccess requestedAccess,
uint processId,
uint id,
uint correlationId,
uint error,
DesiredAccess desiredAccess,
FlagsAndAttributes flagsAndAttributes,
Expand All @@ -38,6 +41,8 @@ public FileAccessData(
_operation = operation;
_requestedAccess = requestedAccess;
_processId = processId;
_id = id;
_correlationId = correlationId;
_error = error;
_desiredAccess = desiredAccess;
_flagsAndAttributes = flagsAndAttributes;
Expand All @@ -56,7 +61,7 @@ public ReportedFileOperation Operation
/// <summary>The requested access.</summary>
public RequestedAccess RequestedAccess
{
get => _requestedAccess;
readonly get => _requestedAccess;
private set => _requestedAccess = value;
}

Expand All @@ -67,6 +72,22 @@ public uint ProcessId
private set => _processId = value;
}

/// <summary>Id of file access.</summary>
public uint Id
{
readonly get => _id;
private set => _id = value;
}


/// <summary>Correlation id of file access.</summary>
public uint CorrelationId
{
readonly get => _correlationId;
private set => _correlationId = value;
}


/// <summary>The error code of the operation.</summary>
public uint Error
{
Expand Down Expand Up @@ -114,6 +135,8 @@ void ITranslatable.Translate(ITranslator translator)
translator.TranslateEnum(ref _operation, (int)_operation);
translator.TranslateEnum(ref _requestedAccess, (int)_requestedAccess);
translator.Translate(ref _processId);
translator.Translate(ref _id);
translator.Translate(ref _correlationId);
translator.Translate(ref _error);
translator.TranslateEnum(ref _desiredAccess, (int)_desiredAccess);
translator.TranslateEnum(ref _flagsAndAttributes, (int)_flagsAndAttributes);
Expand Down
21 changes: 18 additions & 3 deletions src/Tasks/Microsoft.Common.CurrentVersion.targets
Original file line number Diff line number Diff line change
Expand Up @@ -4491,23 +4491,38 @@ Copyright (C) Microsoft Corporation. All rights reserved.
either have the .exe/.dll extension or their publish status has been overriden in VS so they will show up in the PublishFiles collection.
The PublishProtocol property is available only in .NET>=5 so we will used that to exclude .NET FX 4.X case.
-->
<_ClickOnceTransitiveContentItemsTemp Include="@(_TransitiveItemsToCopyToOutputDirectory->'%(TargetPath)')" Condition="'$(PublishProtocol)' == 'ClickOnce'" >
<_ClickOnceTransitiveContentItemsTemp Include="@(_TransitiveItemsToCopyToOutputDirectory->WithoutMetadataValue('CopyToPublishDirectory', 'Never')->'%(TargetPath)')" Condition="'$(PublishProtocol)' == 'ClickOnce'" >
<SavedIdentity>%(Identity)</SavedIdentity>
</_ClickOnceTransitiveContentItemsTemp>
<_ClickOnceTransitiveContentItems Include="@(_ClickOnceTransitiveContentItemsTemp->'%(SavedIdentity)')" Condition="'%(Identity)'=='@(PublishFile)' Or '%(Extension)'=='.exe' Or '%(Extension)'=='.dll'" />

<!--
ClickOnce content items is union of transitive content items and content items from this project.
We also exclude content items from this project that have set CopyToPublishDirectory to Never.
-->
<_ClickOnceContentItems Include="@(ContentWithTargetPath->WithoutMetadataValue('CopyToPublishDirectory', 'Never'))" />
<_ClickOnceContentItems Include="@(_ClickOnceTransitiveContentItems)" />

<!--
For .NET>=5, we need to check if we need to publish any copylocal items from None group. For such items to be published, they either
have .exe/.dll extension or their publish status has been overriden in VS so they will show up in the PublishFiles collection.
The PublishProtocol property is available only in .NET>=5 so we will used that to exclude .NET FX 4.X case.
-->
<!-- Include items from None group for publishing -->
<_ClickOnceNoneItemsTemp Include="@(_NoneWithTargetPath->'%(TargetPath)')" Condition="'$(PublishProtocol)'=='Clickonce' And ('%(_NoneWithTargetPath.CopyToOutputDirectory)'=='Always' or '%(_NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest')">
<_ClickOnceNoneItemsTemp Include="@(_NoneWithTargetPath->WithoutMetadataValue('CopyToPublishDirectory', 'Never')->'%(TargetPath)')" Condition="'$(PublishProtocol)'=='Clickonce' And ('%(_NoneWithTargetPath.CopyToOutputDirectory)'=='Always' or '%(_NoneWithTargetPath.CopyToOutputDirectory)'=='PreserveNewest')">
<SavedIdentity>%(Identity)</SavedIdentity>
</_ClickOnceNoneItemsTemp>
<_ClickOnceNoneItems Include="@(_ClickOnceNoneItemsTemp->'%(SavedIdentity)')" Condition="'%(Identity)'=='@(PublishFile)' Or '%(Extension)'=='.exe' Or '%(Extension)'=='.dll'" />

<_ClickOnceFiles Include="@(ContentWithTargetPath);@(_DeploymentManifestIconFile);@(AppConfigWithTargetPath);@(NetCoreRuntimeJsonFilesForClickOnce);@(_ClickOnceRuntimeCopyLocalItems);@(_ClickOnceNoneItems);@(_ClickOnceTransitiveContentItems)"/>
<_ClickOnceFiles Include="@(_ClickOnceContentItems);@(_DeploymentManifestIconFile);@(AppConfigWithTargetPath);@(NetCoreRuntimeJsonFilesForClickOnce);@(_ClickOnceRuntimeCopyLocalItems);@(_ClickOnceNoneItems)" />

<!-- clear temporary item groups to free memory -->
<_ClickOnceNoneItemsTemp Remove="@(_ClickOnceNoneItemsTemp)"/>
<_ClickOnceNoneItems Remove="@(_ClickOnceNoneItems)"/>
<_ClickOnceTransitiveContentItemsTemp Remove="@(_ClickOnceTransitiveContentItemsTemp)"/>
<_ClickOnceTransitiveContentItems Remove="@(_ClickOnceTransitiveContentItems)"/>
<_ClickOnceContentItems Remove="@(_ClickOnceContentItems)"/>
<_ClickOnceRuntimeCopyLocalItems Remove="@(_ClickOnceRuntimeCopyLocalItems)"/>
</ItemGroup>

<!-- For single file publish, we need to include the SF bundle EXE, application icon file and files excluded from the bundle EXE in the clickonce manifest -->
Expand Down

0 comments on commit 6e97308

Please sign in to comment.