diff --git a/eng/targets/CSharp.Common.props b/eng/targets/CSharp.Common.props
index 080cdea9d4..a8922df73b 100644
--- a/eng/targets/CSharp.Common.props
+++ b/eng/targets/CSharp.Common.props
@@ -14,30 +14,24 @@
-
-
-
-
-
-
-
-
- $(ArtifactsBinDir)Microsoft.NET.Sdk.Razor\$(Configuration)\sdk-output\
-
-
-
-
-
+
+
+
+
+
+
+
+
diff --git a/eng/targets/GetRazorSDKDirectory.props b/eng/targets/GetRazorSDKDirectory.props
new file mode 100644
index 0000000000..7089256236
--- /dev/null
+++ b/eng/targets/GetRazorSDKDirectory.props
@@ -0,0 +1,5 @@
+
+
+ $(ArtifactsBinDir)Microsoft.NET.Sdk.Razor\$(Configuration)\sdk-output\
+
+
\ No newline at end of file
diff --git a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj
index 2c7f374a25..5403eadca1 100644
--- a/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj
+++ b/src/ProjectTemplates/BlazorTemplates.Tests/BlazorTemplates.Tests.csproj
@@ -68,6 +68,10 @@
<_Parameter2>$(TargetFramework)
<_Parameter3>
+
+ <_Parameter1>Test.RazorSdkDirectoryRoot
+ <_Parameter2>$(RazorSdkDirectoryRoot)
+
diff --git a/src/ProjectTemplates/BlazorTemplates.Tests/Infrastructure/TemplateTests.props.in b/src/ProjectTemplates/BlazorTemplates.Tests/Infrastructure/TemplateTests.props.in
index a32b6b82bc..0b1eeedf1b 100644
--- a/src/ProjectTemplates/BlazorTemplates.Tests/Infrastructure/TemplateTests.props.in
+++ b/src/ProjectTemplates/BlazorTemplates.Tests/Infrastructure/TemplateTests.props.in
@@ -35,8 +35,4 @@
Since this is a project reference, we must explicitly import the props file and also specify the output location of the SDK directory.
-->
-
-
- ${ArtifactsBinDir}Microsoft.NET.Sdk.Razor\${Configuration}\sdk-output\
-
diff --git a/src/ProjectTemplates/Shared/Project.cs b/src/ProjectTemplates/Shared/Project.cs
index d16835a57d..505716e01e 100644
--- a/src/ProjectTemplates/Shared/Project.cs
+++ b/src/ProjectTemplates/Shared/Project.cs
@@ -39,6 +39,7 @@ namespace Templates.Test.Helpers
public string ProjectGuid { get; set; }
public string TemplateOutputDir { get; set; }
public string TargetFramework { get; set; } = GetAssemblyMetadata("Test.DefaultTargetFramework");
+ public string RazorSdkDirectoryRoot { get; set; } = GetAssemblyMetadata("Test.RazorSdkDirectoryRoot");
public string TemplateBuildDir => Path.Combine(TemplateOutputDir, "bin", "Debug", TargetFramework);
public string TemplatePublishDir => Path.Combine(TemplateOutputDir, "bin", "Release", TargetFramework, "publish");
@@ -116,7 +117,9 @@ namespace Templates.Test.Helpers
// Avoid restoring as part of build or publish. These projects should have already restored as part of running dotnet new. Explicitly disabling restore
// should avoid any global contention and we can execute a build or publish in a lock-free way
- using var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), $"publish --no-restore -c Release /bl {additionalArgs}", packageOptions);
+ var razorSDKarg = string.IsNullOrEmpty(RazorSdkDirectoryRoot) ? string.Empty : $"/p:RazorSdkDirectoryRoot={RazorSdkDirectoryRoot}";
+
+ using var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), $"publish --no-restore -c Release /bl {razorSDKarg} {additionalArgs}", packageOptions);
await result.Exited;
CaptureBinLogOnFailure(result);
return new ProcessResult(result);
@@ -129,7 +132,9 @@ namespace Templates.Test.Helpers
// Avoid restoring as part of build or publish. These projects should have already restored as part of running dotnet new. Explicitly disabling restore
// should avoid any global contention and we can execute a build or publish in a lock-free way
- using var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), $"build --no-restore -c Debug /bl {additionalArgs}", packageOptions);
+ var razorSDKarg = string.IsNullOrEmpty(RazorSdkDirectoryRoot) ? string.Empty : $"/p:RazorSdkDirectoryRoot={RazorSdkDirectoryRoot}";
+
+ using var result = ProcessEx.Run(Output, TemplateOutputDir, DotNetMuxer.MuxerPathOrDefault(), $"build --no-restore -c Debug /bl {razorSDKarg} {additionalArgs}", packageOptions);
await result.Exited;
CaptureBinLogOnFailure(result);
return new ProcessResult(result);
diff --git a/src/ProjectTemplates/test/Infrastructure/TemplateTests.props.in b/src/ProjectTemplates/test/Infrastructure/TemplateTests.props.in
index 7db32362ad..227bffd7a5 100644
--- a/src/ProjectTemplates/test/Infrastructure/TemplateTests.props.in
+++ b/src/ProjectTemplates/test/Infrastructure/TemplateTests.props.in
@@ -34,9 +34,5 @@
We reference the project to ensure it's built before the other projects that use it. Since this is a project reference, we
must explicitly import the props file and also specify the output location of the SDK directory.
-->
-
-
-
- ${ArtifactsBinDir}Microsoft.NET.Sdk.Razor\${Configuration}\sdk-output\
-
+
diff --git a/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj b/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj
index b5d75bc5ed..081f1b5862 100644
--- a/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj
+++ b/src/ProjectTemplates/test/ProjectTemplates.Tests.csproj
@@ -2,6 +2,7 @@
+
$(DefaultNetCoreTargetFramework)
@@ -61,6 +62,10 @@
<_Parameter1>Test.DefaultTargetFramework
<_Parameter2>$(DefaultNetCoreTargetFramework)
+
+ <_Parameter1>Test.RazorSdkDirectoryRoot
+ <_Parameter2>$(RazorSdkDirectoryRoot)
+
<_Parameter1>ContinuousIntegrationBuild
<_Parameter2>true