Skip to content

Commit aa683ac

Browse files
authored
Add EmbedAllSources build task parameter (#23656)
1 parent 7ad9a46 commit aa683ac

File tree

5 files changed

+51
-4
lines changed

5 files changed

+51
-4
lines changed

src/Compilers/Core/MSBuildTask/ManagedCompiler.cs

+11
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,12 @@ public ITaskItem[] EmbeddedFiles
6363
get { return (ITaskItem[])_store[nameof(EmbeddedFiles)]; }
6464
}
6565

66+
public bool EmbedAllSources
67+
{
68+
set { _store[nameof(EmbedAllSources)] = value; }
69+
get { return _store.GetOrDefault(nameof(EmbedAllSources), false); }
70+
}
71+
6672
public ITaskItem[] Analyzers
6773
{
6874
set { _store[nameof(Analyzers)] = value; }
@@ -845,6 +851,11 @@ private void AddAdditionalFilesToCommandLine(CommandLineBuilderExtension command
845851
/// </summary>
846852
private void AddEmbeddedFilesToCommandLine(CommandLineBuilderExtension commandLine)
847853
{
854+
if (EmbedAllSources)
855+
{
856+
commandLine.AppendSwitch("/embed");
857+
}
858+
848859
if (EmbeddedFiles != null)
849860
{
850861
foreach (ITaskItem embeddedFile in EmbeddedFiles)

src/Compilers/Core/MSBuildTask/Microsoft.CSharp.Core.targets

+1
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,7 @@
9898
DelaySign="$(DelaySign)"
9999
DisabledWarnings="$(NoWarn)"
100100
DocumentationFile="@(DocFileItem)"
101+
EmbedAllSources="$(EmbedAllSources)"
101102
EmbeddedFiles="@(EmbeddedFiles)"
102103
EmitDebugInformation="$(DebugSymbols)"
103104
EnvironmentVariables="$(CscEnvironment)"

src/Compilers/Core/MSBuildTask/Microsoft.VisualBasic.Core.targets

+1
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,7 @@
8484
DelaySign="$(DelaySign)"
8585
DisabledWarnings="$(NoWarn)"
8686
DocumentationFile="@(DocFileItem)"
87+
EmbedAllSources="$(EmbedAllSources)"
8788
EmbeddedFiles="@(EmbeddedFiles)"
8889
EmitDebugInformation="$(DebugSymbols)"
8990
EnvironmentVariables="$(VbcEnvironment)"

src/Compilers/Core/MSBuildTaskTests/CscTests.cs

+19-2
Original file line numberDiff line numberDiff line change
@@ -292,9 +292,26 @@ public void Embed()
292292

293293
csc = new Csc();
294294
csc.Sources = MSBuildUtil.CreateTaskItems("test.cs");
295-
csc.DebugType = "portable";
295+
csc.DebugType = "full";
296296
csc.EmbeddedFiles = MSBuildUtil.CreateTaskItems();
297-
Assert.Equal(@"/debug:portable /out:test.exe test.cs", csc.GenerateResponseFileContents());
297+
Assert.Equal(@"/debug:full /out:test.exe test.cs", csc.GenerateResponseFileContents());
298+
}
299+
300+
[Fact]
301+
public void EmbedAllSources()
302+
{
303+
var csc = new Csc();
304+
csc.Sources = MSBuildUtil.CreateTaskItems("test.cs");
305+
csc.EmbeddedFiles = MSBuildUtil.CreateTaskItems(@"test.cs", @"test.txt");
306+
csc.EmbedAllSources = true;
307+
308+
Assert.Equal(@"/out:test.exe /embed /embed:test.cs /embed:test.txt test.cs", csc.GenerateResponseFileContents());
309+
310+
csc = new Csc();
311+
csc.Sources = MSBuildUtil.CreateTaskItems("test.cs");
312+
csc.EmbedAllSources = true;
313+
314+
Assert.Equal(@"/out:test.exe /embed test.cs", csc.GenerateResponseFileContents());
298315
}
299316

300317
[Fact]

src/Compilers/Core/MSBuildTaskTests/VbcTests.cs

+19-2
Original file line numberDiff line numberDiff line change
@@ -289,9 +289,26 @@ public void Embed()
289289

290290
vbc = new Vbc();
291291
vbc.Sources = MSBuildUtil.CreateTaskItems("test.vb");
292-
vbc.DebugType = "portable";
292+
vbc.DebugType = "full";
293293
vbc.EmbeddedFiles = MSBuildUtil.CreateTaskItems();
294-
Assert.Equal(@"/optionstrict:custom /debug:portable /out:test.exe test.vb", vbc.GenerateResponseFileContents());
294+
Assert.Equal(@"/optionstrict:custom /debug:full /out:test.exe test.vb", vbc.GenerateResponseFileContents());
295+
}
296+
297+
[Fact]
298+
public void EmbedAllSources()
299+
{
300+
var vbc = new Vbc();
301+
vbc.Sources = MSBuildUtil.CreateTaskItems("test.vb");
302+
vbc.EmbeddedFiles = MSBuildUtil.CreateTaskItems(@"test.vb", @"test.txt");
303+
vbc.EmbedAllSources = true;
304+
305+
Assert.Equal(@"/optionstrict:custom /out:test.exe /embed /embed:test.vb /embed:test.txt test.vb", vbc.GenerateResponseFileContents());
306+
307+
vbc = new Vbc();
308+
vbc.Sources = MSBuildUtil.CreateTaskItems("test.vb");
309+
vbc.EmbedAllSources = true;
310+
311+
Assert.Equal(@"/optionstrict:custom /out:test.exe /embed test.vb", vbc.GenerateResponseFileContents());
295312
}
296313

297314
[Fact]

0 commit comments

Comments
 (0)