Skip to content

Commit b3fc480

Browse files
authored
Merge pull request #18986 from dsplaisted/fix-reference-testproject
Don't produce errors when an Exe project references a test project
2 parents 3c67bb7 + e551cd5 commit b3fc480

File tree

2 files changed

+44
-1
lines changed

2 files changed

+44
-1
lines changed

src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.targets

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1051,13 +1051,19 @@ Copyright (c) .NET Foundation. All rights reserved.
10511051
<!-- Don't generate a NETSDK1151 error if a non self-contained Exe references a Blazor wasm Exe -->
10521052
<ShouldBeValidatedAsExecutableReference>false</ShouldBeValidatedAsExecutableReference>
10531053
</PropertyGroup>
1054-
1054+
10551055
<PropertyGroup Condition="'$(IsTestProject)' == 'true' And '$(ValidateExecutableReferencesMatchSelfContained)' == ''">
10561056
<!-- Don't generate an error if a test project references a self-contained Exe. Test projects
10571057
use an OutputType of Exe but will usually call APIs in a referenced Exe rather than try
10581058
to run it. -->
10591059
<ValidateExecutableReferencesMatchSelfContained>false</ValidateExecutableReferencesMatchSelfContained>
10601060
</PropertyGroup>
1061+
1062+
<PropertyGroup Condition="'$(IsTestProject)' == 'true'">
1063+
<!-- Don't generate an error if an Exe project references a test project. -->
1064+
<ShouldBeValidatedAsExecutableReference>false</ShouldBeValidatedAsExecutableReference>
1065+
</PropertyGroup>
1066+
10611067

10621068
<UsingTask TaskName="ValidateExecutableReferences" AssemblyFile="$(MicrosoftNETBuildTasksAssembly)" />
10631069

src/Tests/Microsoft.NET.Build.Tests/ReferenceExeTests.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -295,5 +295,42 @@ public void TestProjectCanReferenceExe(string testTemplateName)
295295
.Pass();
296296

297297
}
298+
299+
[RequiresMSBuildVersionTheory("17.0.0.32901")]
300+
[InlineData("xunit")]
301+
[InlineData("mstest")]
302+
public void ExeProjectCanReferenceTestProject(string testTemplateName)
303+
{
304+
var testConsoleProject = new TestProject("ConsoleApp")
305+
{
306+
IsExe = true,
307+
TargetFrameworks = "net6.0",
308+
RuntimeIdentifier = EnvironmentInfo.GetCompatibleRid()
309+
};
310+
311+
var testAsset = _testAssetsManager.CreateTestProject(testConsoleProject, identifier: testTemplateName);
312+
313+
var testProjectDirectory = Path.Combine(testAsset.TestRoot, "TestProject");
314+
Directory.CreateDirectory(testProjectDirectory);
315+
316+
new DotnetCommand(Log, "new", testTemplateName)
317+
.WithWorkingDirectory(testProjectDirectory)
318+
.Execute()
319+
.Should()
320+
.Pass();
321+
322+
string consoleProjectDirectory = Path.Combine(testAsset.Path, testConsoleProject.Name);
323+
324+
new DotnetCommand(Log, "add", "reference", ".." + Path.DirectorySeparatorChar + "TestProject")
325+
.WithWorkingDirectory(consoleProjectDirectory)
326+
.Execute()
327+
.Should()
328+
.Pass();
329+
330+
new BuildCommand(Log, consoleProjectDirectory)
331+
.Execute()
332+
.Should()
333+
.Pass();
334+
}
298335
}
299336
}

0 commit comments

Comments
 (0)