From c967494a19ed3f122f3c3c14d7fa1192ae378e64 Mon Sep 17 00:00:00 2001 From: Ben Villalobos Date: Wed, 7 Aug 2019 11:59:35 -0700 Subject: [PATCH 1/7] Base functionality added --- .../net/Microsoft.Build.Tasks.Core.cs | 4 ++++ .../netstandard/Microsoft.Build.Tasks.Core.cs | 4 ++++ src/Tasks/CreateCSharpManifestResourceName.cs | 2 ++ src/Tasks/CreateManifestResourceName.cs | 14 ++++++++++++++ src/Tasks/CreateVisualBasicManifestResourceName.cs | 2 ++ src/Tasks/Microsoft.CSharp.CurrentVersion.targets | 4 +++- .../Microsoft.VisualBasic.CurrentVersion.targets | 4 +++- 7 files changed, 32 insertions(+), 2 deletions(-) diff --git a/ref/Microsoft.Build.Tasks.Core/net/Microsoft.Build.Tasks.Core.cs b/ref/Microsoft.Build.Tasks.Core/net/Microsoft.Build.Tasks.Core.cs index 9bf6ed5bb2c..40c831c5f84 100644 --- a/ref/Microsoft.Build.Tasks.Core/net/Microsoft.Build.Tasks.Core.cs +++ b/ref/Microsoft.Build.Tasks.Core/net/Microsoft.Build.Tasks.Core.cs @@ -194,6 +194,7 @@ public void Cancel() { } public partial class CreateCSharpManifestResourceName : Microsoft.Build.Tasks.CreateManifestResourceName { public CreateCSharpManifestResourceName() { } + public override string SourceFileExtension { get { throw null; } } protected override string CreateManifestName(string fileName, string linkFileName, string rootNamespace, string dependentUponFileName, System.IO.Stream binaryStream) { throw null; } protected override bool IsSourceFile(string fileName) { throw null; } } @@ -219,6 +220,8 @@ protected CreateManifestResourceName() { } [Microsoft.Build.Framework.OutputAttribute] public Microsoft.Build.Framework.ITaskItem[] ResourceFilesWithManifestResourceNames { get { throw null; } set { } } public string RootNamespace { get { throw null; } set { } } + public abstract string SourceFileExtension { get; } + public bool UseDependentUponConvention { get { throw null; } set { } } protected abstract string CreateManifestName(string fileName, string linkFileName, string rootNamespaceName, string dependentUponFileName, System.IO.Stream binaryStream); public override bool Execute() { throw null; } protected abstract bool IsSourceFile(string fileName); @@ -236,6 +239,7 @@ public CreateProperty() { } public partial class CreateVisualBasicManifestResourceName : Microsoft.Build.Tasks.CreateManifestResourceName { public CreateVisualBasicManifestResourceName() { } + public override string SourceFileExtension { get { throw null; } } protected override string CreateManifestName(string fileName, string linkFileName, string rootNamespace, string dependentUponFileName, System.IO.Stream binaryStream) { throw null; } protected override bool IsSourceFile(string fileName) { throw null; } } diff --git a/ref/Microsoft.Build.Tasks.Core/netstandard/Microsoft.Build.Tasks.Core.cs b/ref/Microsoft.Build.Tasks.Core/netstandard/Microsoft.Build.Tasks.Core.cs index 5617d0c4c55..72eb59e2f9a 100644 --- a/ref/Microsoft.Build.Tasks.Core/netstandard/Microsoft.Build.Tasks.Core.cs +++ b/ref/Microsoft.Build.Tasks.Core/netstandard/Microsoft.Build.Tasks.Core.cs @@ -124,6 +124,7 @@ public void Cancel() { } public partial class CreateCSharpManifestResourceName : Microsoft.Build.Tasks.CreateManifestResourceName { public CreateCSharpManifestResourceName() { } + public override string SourceFileExtension { get { throw null; } } protected override string CreateManifestName(string fileName, string linkFileName, string rootNamespace, string dependentUponFileName, System.IO.Stream binaryStream) { throw null; } protected override bool IsSourceFile(string fileName) { throw null; } } @@ -149,6 +150,8 @@ protected CreateManifestResourceName() { } [Microsoft.Build.Framework.OutputAttribute] public Microsoft.Build.Framework.ITaskItem[] ResourceFilesWithManifestResourceNames { get { throw null; } set { } } public string RootNamespace { get { throw null; } set { } } + public abstract string SourceFileExtension { get; } + public bool UseDependentUponConvention { get { throw null; } set { } } protected abstract string CreateManifestName(string fileName, string linkFileName, string rootNamespaceName, string dependentUponFileName, System.IO.Stream binaryStream); public override bool Execute() { throw null; } protected abstract bool IsSourceFile(string fileName); @@ -166,6 +169,7 @@ public CreateProperty() { } public partial class CreateVisualBasicManifestResourceName : Microsoft.Build.Tasks.CreateManifestResourceName { public CreateVisualBasicManifestResourceName() { } + public override string SourceFileExtension { get { throw null; } } protected override string CreateManifestName(string fileName, string linkFileName, string rootNamespace, string dependentUponFileName, System.IO.Stream binaryStream) { throw null; } protected override bool IsSourceFile(string fileName) { throw null; } } diff --git a/src/Tasks/CreateCSharpManifestResourceName.cs b/src/Tasks/CreateCSharpManifestResourceName.cs index 1a2971efc20..68abaf3c961 100644 --- a/src/Tasks/CreateCSharpManifestResourceName.cs +++ b/src/Tasks/CreateCSharpManifestResourceName.cs @@ -17,6 +17,8 @@ namespace Microsoft.Build.Tasks /// public class CreateCSharpManifestResourceName : CreateManifestResourceName { + public override string SourceFileExtension => ".cs"; + /// /// Utility function for creating a C#-style manifest name from /// a resource name. diff --git a/src/Tasks/CreateManifestResourceName.cs b/src/Tasks/CreateManifestResourceName.cs index bc8c733e8ff..6297fa3b6fd 100644 --- a/src/Tasks/CreateManifestResourceName.cs +++ b/src/Tasks/CreateManifestResourceName.cs @@ -33,6 +33,10 @@ public abstract class CreateManifestResourceName : TaskExtension /// public bool PrependCultureAsDirectory { get; set; } = true; + public bool UseDependentUponConvention { get; set; } + + public abstract string SourceFileExtension { get; } + /// /// The possibly dependent resource files. /// @@ -142,6 +146,16 @@ CreateFileStream createFileStream string fileName = resourceFile.ItemSpec; string dependentUpon = resourceFile.GetMetadata(ItemMetadataNames.dependentUpon); + if(UseDependentUponConvention && string.IsNullOrEmpty(dependentUpon)) + { + string conventionDependentUpon = Path.ChangeExtension(fileName, SourceFileExtension); + + if(File.Exists(conventionDependentUpon)) + { + dependentUpon = conventionDependentUpon; + } + } + // Pre-log some information. bool isDependentOnSourceFile = !string.IsNullOrEmpty(dependentUpon) && IsSourceFile(dependentUpon); diff --git a/src/Tasks/CreateVisualBasicManifestResourceName.cs b/src/Tasks/CreateVisualBasicManifestResourceName.cs index 8d8a4a60a7b..2e430953617 100644 --- a/src/Tasks/CreateVisualBasicManifestResourceName.cs +++ b/src/Tasks/CreateVisualBasicManifestResourceName.cs @@ -15,6 +15,8 @@ namespace Microsoft.Build.Tasks /// public class CreateVisualBasicManifestResourceName : CreateManifestResourceName { + public override string SourceFileExtension => ".vb"; + /// /// Utility function for creating a VB-style manifest name from /// a resource name. diff --git a/src/Tasks/Microsoft.CSharp.CurrentVersion.targets b/src/Tasks/Microsoft.CSharp.CurrentVersion.targets index 8342a6e53b1..8f3e694da33 100644 --- a/src/Tasks/Microsoft.CSharp.CurrentVersion.targets +++ b/src/Tasks/Microsoft.CSharp.CurrentVersion.targets @@ -99,7 +99,8 @@ Copyright (C) Microsoft Corporation. All rights reserved. @@ -111,6 +112,7 @@ Copyright (C) Microsoft Corporation. All rights reserved. ResourceFiles="@(EmbeddedResource)" RootNamespace="$(RootNamespace)" PrependCultureAsDirectory="false" + UseDependentUponConvention="$(EmbeddedResourceUseDependentUponConvention)" Condition="'%(EmbeddedResource.ManifestResourceName)' == '' and '%(EmbeddedResource.WithCulture)' == 'true' and '%(EmbeddedResource.Type)' == 'Non-Resx'"> diff --git a/src/Tasks/Microsoft.VisualBasic.CurrentVersion.targets b/src/Tasks/Microsoft.VisualBasic.CurrentVersion.targets index 99d28895f88..6f68a477631 100644 --- a/src/Tasks/Microsoft.VisualBasic.CurrentVersion.targets +++ b/src/Tasks/Microsoft.VisualBasic.CurrentVersion.targets @@ -100,6 +100,7 @@ Copyright (C) Microsoft Corporation. All rights reserved. @@ -110,7 +111,8 @@ Copyright (C) Microsoft Corporation. All rights reserved. From ea1a292be7cd1b5640fbc1ca405c2efe5bc45714 Mon Sep 17 00:00:00 2001 From: Ben Villalobos Date: Thu, 8 Aug 2019 13:30:59 -0700 Subject: [PATCH 2/7] Unit tests for DependentUpon --- .../CreateCSharpManifestResourceName_Tests.cs | 141 ++++++++++++++++++ src/Tasks/CreateManifestResourceName.cs | 1 + 2 files changed, 142 insertions(+) diff --git a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs index 2f5165384bf..6a9e58cbaf2 100644 --- a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs +++ b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs @@ -8,12 +8,21 @@ using Microsoft.Build.Shared; using Microsoft.Build.Tasks; using Microsoft.Build.Utilities; +using Shouldly; using Xunit; +using Xunit.Abstractions; namespace Microsoft.Build.UnitTests { sealed public class CreateCSharpManifestResourceName_Tests { + + private readonly ITestOutputHelper _testOutput; + + public CreateCSharpManifestResourceName_Tests(ITestOutputHelper output) + { + _testOutput = output; + } /// /// Test the basic functionality. /// @@ -377,6 +386,138 @@ public void Regress188319() Assert.Equal(@"CustomToolTest.SR1", resourceNames[0].ItemSpec); } + /// + /// Opt into DependentUpon convention and load the expected file properly. + /// + [Fact] + public void DependentUpon_UseConvention() + { + using (var env = TestEnvironment.Create()) + { + var csFile = env.CreateFile("SR1.cs", "namespace MyStuff.Namespace { class Class { } }"); + var resXFile = env.CreateFile("SR1.resx", ""); + + ITaskItem i = new TaskItem(resXFile.Path); + i.SetMetadata("BuildAction", "EmbeddedResource"); + // Don't set DependentUpon so it goes by convention + + CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName + { + BuildEngine = new MockEngine(_testOutput), + UseDependentUponConvention = true, + ResourceFiles = new ITaskItem[] { i } + }; + + t.Execute().ShouldBeTrue("Expected the task to succeed."); + + t.ManifestResourceNames.Length.ShouldBe(1, "Only 1 resource file should exist"); + + t.ManifestResourceNames[0].ItemSpec.ShouldBe("MyStuff.Namespace.Class", "Expecting to find the namespace & class name from SR1.cs"); + } + } + + /// + /// Opt into DependentUpon convention without creating the equivalent .cs file for our resource file. + /// + [Fact] + public void DependentUpon_UseConventionFileDoesNotExist() + { + using (var env = TestEnvironment.Create()) + { + // cs file doesn't exist for this case. + var resXFile = env.CreateFile("SR1.resx", ""); + + ITaskItem i = new TaskItem(Path.GetFileName(resXFile.Path)); + i.SetMetadata("BuildAction", "EmbeddedResource"); + // Don't set DependentUpon so it goes by convention + + // Use relative paths to ensure short manifest name based on the path to the resx. + // See CreateManifestNameImpl + env.SetCurrentDirectory(Path.GetDirectoryName(resXFile.Path)); + + CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName + { + BuildEngine = new MockEngine(_testOutput), + UseDependentUponConvention = true, + ResourceFiles = new ITaskItem[] { i } + }; + + t.Execute().ShouldBeTrue("Expected the task to succeed."); + + t.ManifestResourceNames.Length.ShouldBe(1, "Only 1 resource should exist"); + + t.ManifestResourceNames[0].ItemSpec.ShouldBe("SR1", "Expected only the file name."); + } + } + + /// + /// Opt into DependentUponConvention, but include DependentUpon metadata with different name. + /// + [Fact] + public void DependentUpon_SpecifyNewFile() + { + using (var env = TestEnvironment.Create()) + { + var conventionCSFile = env.CreateFile("SR1.cs", "namespace MyStuff.Namespace { class Class { } }"); + var nonConventionCSFile = env.CreateFile("SR2.cs", "namespace MyStuff2.Namespace { class Class2 { } }"); + var resXFile = env.CreateFile("SR1.resx", ""); + + ITaskItem i = new TaskItem(resXFile.Path); + i.SetMetadata("BuildAction", "EmbeddedResource"); + i.SetMetadata("DependentUpon", "SR2.cs"); + + CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName + { + BuildEngine = new MockEngine(_testOutput), + UseDependentUponConvention = true, + ResourceFiles = new ITaskItem[] { i } + }; + + t.Execute().ShouldBeTrue("Expected the task to succeed."); + + t.ManifestResourceNames.Length.ShouldBe(1, "Only 1 resource file should exist"); + + t.ManifestResourceNames[0].ItemSpec.ShouldBe("MyStuff2.Namespace.Class2", "Expected the namespace & class of SR2."); + } + } + + + + /// + /// When disabling UseDependentUponConvention it will find no .cs file and default to filename. + /// + [Fact] + public void DependentUpon_DisableConvention() + { + using (var env = TestEnvironment.Create()) + { + var csFile = env.CreateFile("SR1.cs", "namespace MyStuff.Namespace { class Class { } }"); + var resXFile = env.CreateFile("SR1.resx", ""); + + ITaskItem i = new TaskItem(Path.GetFileName(resXFile.Path)); + i.SetMetadata("BuildAction", "EmbeddedResource"); + i.SetMetadata("DependentUpon", ""); + + // Use relative paths to ensure short manifest name based on the path to the resx. + // See CreateManifestNameImpl + env.SetCurrentDirectory(Path.GetDirectoryName(resXFile.Path)); + + CreateCSharpManifestResourceName t = new CreateCSharpManifestResourceName + { + BuildEngine = new MockEngine(_testOutput), + UseDependentUponConvention = false, + ResourceFiles = new ITaskItem[] { i } + }; + + t.Execute().ShouldBeTrue("Expected the task to succeed."); + + t.ManifestResourceNames.Length.ShouldBe(1, "Only 1 resource file should exist"); + + t.ManifestResourceNames[0].ItemSpec.ShouldBe("SR1", "Expected only the file name."); + } + } + + /// /// helper method for verifying manifest resource names /// diff --git a/src/Tasks/CreateManifestResourceName.cs b/src/Tasks/CreateManifestResourceName.cs index 6297fa3b6fd..884f43ab1ad 100644 --- a/src/Tasks/CreateManifestResourceName.cs +++ b/src/Tasks/CreateManifestResourceName.cs @@ -146,6 +146,7 @@ CreateFileStream createFileStream string fileName = resourceFile.ItemSpec; string dependentUpon = resourceFile.GetMetadata(ItemMetadataNames.dependentUpon); + //If opted into convention and no DependentUpon metadata, go by convention ".cs" if it exists. if(UseDependentUponConvention && string.IsNullOrEmpty(dependentUpon)) { string conventionDependentUpon = Path.ChangeExtension(fileName, SourceFileExtension); From f45378e441d154e7fb5f248b3f09a507b19e1c0b Mon Sep 17 00:00:00 2001 From: Ben Villalobos Date: Thu, 8 Aug 2019 13:43:53 -0700 Subject: [PATCH 3/7] Removed setting DependentUpon metadata --- src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs index 6a9e58cbaf2..f514c6877c1 100644 --- a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs +++ b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs @@ -496,7 +496,7 @@ public void DependentUpon_DisableConvention() ITaskItem i = new TaskItem(Path.GetFileName(resXFile.Path)); i.SetMetadata("BuildAction", "EmbeddedResource"); - i.SetMetadata("DependentUpon", ""); + // No need to set DependentUpon // Use relative paths to ensure short manifest name based on the path to the resx. // See CreateManifestNameImpl From edeb0cd5ad30597644a1706db1a532bd6f09619c Mon Sep 17 00:00:00 2001 From: Ben Villalobos Date: Thu, 8 Aug 2019 14:18:11 -0700 Subject: [PATCH 4/7] Apply suggestions from code review Co-Authored-By: Rainer Sigwald --- src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs | 4 ++-- src/Tasks/CreateManifestResourceName.cs | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs index f514c6877c1..52d985ec062 100644 --- a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs +++ b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs @@ -390,7 +390,7 @@ public void Regress188319() /// Opt into DependentUpon convention and load the expected file properly. /// [Fact] - public void DependentUpon_UseConvention() + public void DependentUponConvention_FindsMatch() { using (var env = TestEnvironment.Create()) { @@ -487,7 +487,7 @@ public void DependentUpon_SpecifyNewFile() /// When disabling UseDependentUponConvention it will find no .cs file and default to filename. /// [Fact] - public void DependentUpon_DisableConvention() + public void DependentUponConvention_ConventionDisabledDoesNotReadConventionFile() { using (var env = TestEnvironment.Create()) { diff --git a/src/Tasks/CreateManifestResourceName.cs b/src/Tasks/CreateManifestResourceName.cs index 884f43ab1ad..6e93e7b803c 100644 --- a/src/Tasks/CreateManifestResourceName.cs +++ b/src/Tasks/CreateManifestResourceName.cs @@ -35,7 +35,7 @@ public abstract class CreateManifestResourceName : TaskExtension public bool UseDependentUponConvention { get; set; } - public abstract string SourceFileExtension { get; } + internal abstract string SourceFileExtension { get; } /// /// The possibly dependent resource files. @@ -146,7 +146,7 @@ CreateFileStream createFileStream string fileName = resourceFile.ItemSpec; string dependentUpon = resourceFile.GetMetadata(ItemMetadataNames.dependentUpon); - //If opted into convention and no DependentUpon metadata, go by convention ".cs" if it exists. + // If opted into convention and no DependentUpon metadata, reference ".cs" if it exists. if(UseDependentUponConvention && string.IsNullOrEmpty(dependentUpon)) { string conventionDependentUpon = Path.ChangeExtension(fileName, SourceFileExtension); From d061e09e03e811399681a08b0b332f946c770a27 Mon Sep 17 00:00:00 2001 From: Ben Villalobos Date: Thu, 8 Aug 2019 14:21:11 -0700 Subject: [PATCH 5/7] Using proper shouldly functions --- .../CreateCSharpManifestResourceName_Tests.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs index 52d985ec062..4ce994a9d38 100644 --- a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs +++ b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs @@ -410,7 +410,7 @@ public void DependentUponConvention_FindsMatch() t.Execute().ShouldBeTrue("Expected the task to succeed."); - t.ManifestResourceNames.Length.ShouldBe(1, "Only 1 resource file should exist"); + t.ManifestResourceNames.ShouldHaveSingleItem(); t.ManifestResourceNames[0].ItemSpec.ShouldBe("MyStuff.Namespace.Class", "Expecting to find the namespace & class name from SR1.cs"); } @@ -444,7 +444,7 @@ public void DependentUpon_UseConventionFileDoesNotExist() t.Execute().ShouldBeTrue("Expected the task to succeed."); - t.ManifestResourceNames.Length.ShouldBe(1, "Only 1 resource should exist"); + t.ManifestResourceNames.ShouldHaveSingleItem(); t.ManifestResourceNames[0].ItemSpec.ShouldBe("SR1", "Expected only the file name."); } @@ -475,7 +475,7 @@ public void DependentUpon_SpecifyNewFile() t.Execute().ShouldBeTrue("Expected the task to succeed."); - t.ManifestResourceNames.Length.ShouldBe(1, "Only 1 resource file should exist"); + t.ManifestResourceNames.ShouldHaveSingleItem(); t.ManifestResourceNames[0].ItemSpec.ShouldBe("MyStuff2.Namespace.Class2", "Expected the namespace & class of SR2."); } @@ -511,7 +511,7 @@ public void DependentUponConvention_ConventionDisabledDoesNotReadConventionFile( t.Execute().ShouldBeTrue("Expected the task to succeed."); - t.ManifestResourceNames.Length.ShouldBe(1, "Only 1 resource file should exist"); + t.ManifestResourceNames.ShouldHaveSingleItem(); t.ManifestResourceNames[0].ItemSpec.ShouldBe("SR1", "Expected only the file name."); } From 357ca991afc9bd9c719125415f6ed07218e5e292 Mon Sep 17 00:00:00 2001 From: Ben Villalobos Date: Thu, 8 Aug 2019 15:00:16 -0700 Subject: [PATCH 6/7] Code review suggestions --- src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs | 3 --- src/Tasks/CreateManifestResourceName.cs | 4 ++-- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs index 4ce994a9d38..45e6740a441 100644 --- a/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs +++ b/src/Tasks.UnitTests/CreateCSharpManifestResourceName_Tests.cs @@ -481,8 +481,6 @@ public void DependentUpon_SpecifyNewFile() } } - - /// /// When disabling UseDependentUponConvention it will find no .cs file and default to filename. /// @@ -517,7 +515,6 @@ public void DependentUponConvention_ConventionDisabledDoesNotReadConventionFile( } } - /// /// helper method for verifying manifest resource names /// diff --git a/src/Tasks/CreateManifestResourceName.cs b/src/Tasks/CreateManifestResourceName.cs index 6e93e7b803c..eb2aafa41f1 100644 --- a/src/Tasks/CreateManifestResourceName.cs +++ b/src/Tasks/CreateManifestResourceName.cs @@ -147,11 +147,11 @@ CreateFileStream createFileStream string dependentUpon = resourceFile.GetMetadata(ItemMetadataNames.dependentUpon); // If opted into convention and no DependentUpon metadata, reference ".cs" if it exists. - if(UseDependentUponConvention && string.IsNullOrEmpty(dependentUpon)) + if (UseDependentUponConvention && string.IsNullOrEmpty(dependentUpon)) { string conventionDependentUpon = Path.ChangeExtension(fileName, SourceFileExtension); - if(File.Exists(conventionDependentUpon)) + if (File.Exists(conventionDependentUpon)) { dependentUpon = conventionDependentUpon; } From ded7c259dcd3e1c25e342af42916bbe4e3a3a0cf Mon Sep 17 00:00:00 2001 From: Ben Villalobos Date: Thu, 8 Aug 2019 15:14:03 -0700 Subject: [PATCH 7/7] SourceFileExtension back to internal. --- .../net/Microsoft.Build.Tasks.Core.cs | 3 --- .../netstandard/Microsoft.Build.Tasks.Core.cs | 3 --- src/Tasks/CreateCSharpManifestResourceName.cs | 2 +- src/Tasks/CreateVisualBasicManifestResourceName.cs | 2 +- 4 files changed, 2 insertions(+), 8 deletions(-) diff --git a/ref/Microsoft.Build.Tasks.Core/net/Microsoft.Build.Tasks.Core.cs b/ref/Microsoft.Build.Tasks.Core/net/Microsoft.Build.Tasks.Core.cs index 40c831c5f84..5d0241d322a 100644 --- a/ref/Microsoft.Build.Tasks.Core/net/Microsoft.Build.Tasks.Core.cs +++ b/ref/Microsoft.Build.Tasks.Core/net/Microsoft.Build.Tasks.Core.cs @@ -194,7 +194,6 @@ public void Cancel() { } public partial class CreateCSharpManifestResourceName : Microsoft.Build.Tasks.CreateManifestResourceName { public CreateCSharpManifestResourceName() { } - public override string SourceFileExtension { get { throw null; } } protected override string CreateManifestName(string fileName, string linkFileName, string rootNamespace, string dependentUponFileName, System.IO.Stream binaryStream) { throw null; } protected override bool IsSourceFile(string fileName) { throw null; } } @@ -220,7 +219,6 @@ protected CreateManifestResourceName() { } [Microsoft.Build.Framework.OutputAttribute] public Microsoft.Build.Framework.ITaskItem[] ResourceFilesWithManifestResourceNames { get { throw null; } set { } } public string RootNamespace { get { throw null; } set { } } - public abstract string SourceFileExtension { get; } public bool UseDependentUponConvention { get { throw null; } set { } } protected abstract string CreateManifestName(string fileName, string linkFileName, string rootNamespaceName, string dependentUponFileName, System.IO.Stream binaryStream); public override bool Execute() { throw null; } @@ -239,7 +237,6 @@ public CreateProperty() { } public partial class CreateVisualBasicManifestResourceName : Microsoft.Build.Tasks.CreateManifestResourceName { public CreateVisualBasicManifestResourceName() { } - public override string SourceFileExtension { get { throw null; } } protected override string CreateManifestName(string fileName, string linkFileName, string rootNamespace, string dependentUponFileName, System.IO.Stream binaryStream) { throw null; } protected override bool IsSourceFile(string fileName) { throw null; } } diff --git a/ref/Microsoft.Build.Tasks.Core/netstandard/Microsoft.Build.Tasks.Core.cs b/ref/Microsoft.Build.Tasks.Core/netstandard/Microsoft.Build.Tasks.Core.cs index 72eb59e2f9a..2c235de6cee 100644 --- a/ref/Microsoft.Build.Tasks.Core/netstandard/Microsoft.Build.Tasks.Core.cs +++ b/ref/Microsoft.Build.Tasks.Core/netstandard/Microsoft.Build.Tasks.Core.cs @@ -124,7 +124,6 @@ public void Cancel() { } public partial class CreateCSharpManifestResourceName : Microsoft.Build.Tasks.CreateManifestResourceName { public CreateCSharpManifestResourceName() { } - public override string SourceFileExtension { get { throw null; } } protected override string CreateManifestName(string fileName, string linkFileName, string rootNamespace, string dependentUponFileName, System.IO.Stream binaryStream) { throw null; } protected override bool IsSourceFile(string fileName) { throw null; } } @@ -150,7 +149,6 @@ protected CreateManifestResourceName() { } [Microsoft.Build.Framework.OutputAttribute] public Microsoft.Build.Framework.ITaskItem[] ResourceFilesWithManifestResourceNames { get { throw null; } set { } } public string RootNamespace { get { throw null; } set { } } - public abstract string SourceFileExtension { get; } public bool UseDependentUponConvention { get { throw null; } set { } } protected abstract string CreateManifestName(string fileName, string linkFileName, string rootNamespaceName, string dependentUponFileName, System.IO.Stream binaryStream); public override bool Execute() { throw null; } @@ -169,7 +167,6 @@ public CreateProperty() { } public partial class CreateVisualBasicManifestResourceName : Microsoft.Build.Tasks.CreateManifestResourceName { public CreateVisualBasicManifestResourceName() { } - public override string SourceFileExtension { get { throw null; } } protected override string CreateManifestName(string fileName, string linkFileName, string rootNamespace, string dependentUponFileName, System.IO.Stream binaryStream) { throw null; } protected override bool IsSourceFile(string fileName) { throw null; } } diff --git a/src/Tasks/CreateCSharpManifestResourceName.cs b/src/Tasks/CreateCSharpManifestResourceName.cs index 68abaf3c961..5b754bbf63e 100644 --- a/src/Tasks/CreateCSharpManifestResourceName.cs +++ b/src/Tasks/CreateCSharpManifestResourceName.cs @@ -17,7 +17,7 @@ namespace Microsoft.Build.Tasks /// public class CreateCSharpManifestResourceName : CreateManifestResourceName { - public override string SourceFileExtension => ".cs"; + internal override string SourceFileExtension => ".cs"; /// /// Utility function for creating a C#-style manifest name from diff --git a/src/Tasks/CreateVisualBasicManifestResourceName.cs b/src/Tasks/CreateVisualBasicManifestResourceName.cs index 2e430953617..1471250330a 100644 --- a/src/Tasks/CreateVisualBasicManifestResourceName.cs +++ b/src/Tasks/CreateVisualBasicManifestResourceName.cs @@ -15,7 +15,7 @@ namespace Microsoft.Build.Tasks /// public class CreateVisualBasicManifestResourceName : CreateManifestResourceName { - public override string SourceFileExtension => ".vb"; + internal override string SourceFileExtension => ".vb"; /// /// Utility function for creating a VB-style manifest name from