diff --git a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs index 2d37c1007e..d3796af4d4 100644 --- a/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs +++ b/templates/app/aspnet-core/test/MyCompanyName.MyProjectName.Web.Tests/WebContentDirectoryFinder.cs @@ -13,21 +13,32 @@ namespace MyCompanyName.MyProjectName { public static string CalculateContentRootFolder() { - var domainAssemblyDirectoryPath = Path.GetDirectoryName(typeof(MyProjectNameDomainModule).Assembly.Location); + var domainAssemblyDirectoryPath = + Path.GetDirectoryName(typeof(MyProjectNameDomainModule).Assembly.Location); if (domainAssemblyDirectoryPath == null) { - throw new Exception($"Could not find location of {typeof(MyProjectNameDomainModule).Assembly.FullName} assembly!"); + throw new Exception( + $"Could not find location of {typeof(MyProjectNameDomainModule).Assembly.FullName} assembly!"); } var directoryInfo = new DirectoryInfo(domainAssemblyDirectoryPath); - while (!DirectoryContains(directoryInfo.FullName, "MyCompanyName.MyProjectName.sln")) + + if (Environment.GetEnvironmentVariable("NCrunch") == "1") { - if (directoryInfo.Parent == null) + while (!DirectoryContains(directoryInfo.FullName, "MyCompanyName.MyProjectName.Web.csproj", SearchOption.AllDirectories)) { - throw new Exception("Could not find content root folder!"); + directoryInfo = directoryInfo.Parent ?? throw new Exception("Could not find content root folder!"); } - directoryInfo = directoryInfo.Parent; + var webProject = Directory.GetFiles(directoryInfo.FullName, string.Empty, SearchOption.AllDirectories) + .First(filePath => string.Equals(Path.GetFileName(filePath), "MyCompanyName.MyProjectName.Web.csproj")); + + return Path.GetDirectoryName(webProject); + } + + while (!DirectoryContains(directoryInfo.FullName, "MyCompanyName.MyProjectName.sln")) + { + directoryInfo = directoryInfo.Parent ?? throw new Exception("Could not find content root folder!"); } var webFolder = Path.Combine(directoryInfo.FullName, $"src{Path.DirectorySeparatorChar}MyCompanyName.MyProjectName.Web"); @@ -39,9 +50,11 @@ namespace MyCompanyName.MyProjectName throw new Exception("Could not find root folder of the web project!"); } - private static bool DirectoryContains(string directory, string fileName) + private static bool DirectoryContains(string directory, string fileName, + SearchOption searchOption = SearchOption.TopDirectoryOnly) { - return Directory.GetFiles(directory).Any(filePath => string.Equals(Path.GetFileName(filePath), fileName)); + return Directory.GetFiles(directory, string.Empty, searchOption) + .Any(filePath => string.Equals(Path.GetFileName(filePath), fileName)); } } }