diff --git a/source/OctoPack.Tests/Integration/BuildFixture.cs b/source/OctoPack.Tests/Integration/BuildFixture.cs index f2f9729..e30be68 100644 --- a/source/OctoPack.Tests/Integration/BuildFixture.cs +++ b/source/OctoPack.Tests/Integration/BuildFixture.cs @@ -56,13 +56,22 @@ protected static void MsBuild(string commandLineArguments, Action output private static string GetMsBuildPath() { string msBuild; + var programFilesDirectory = Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86); - foreach (var version in new []{"14.0","12.0"}) + foreach (var version in new[] { "Current", "15.0", "14.0", "12.0" }) { - var buildDirectory = Path.Combine(programFilesDirectory, "MSBuild", version, "Bin"); - msBuild = Path.Combine(buildDirectory, "msbuild.exe"); - if (File.Exists(msBuild)) - return msBuild; + // As of Visual Studio 2017, Microsoft changed where the MSBuild tools reside. As of Visual Studio 2019, Microsoft stopped using + // a version number, such as 15.0, in the path and now uses 'Current'. + // This additional loop accounts for MSBuild located in the Visual Studio installation path for both VS2017 and VS2019 Professional + // and enterprise editions. This is still fragile, as there are other editions of Visual Studio, and also does not account for + // the Visual Studio Build Tools (for 2017 and 2019). + // The last empty string array entry is for Visual Studio 2015 and below. + foreach (var msBuildBasePath in new[] { "Microsoft Visual Studio\\2019\\Professional", "Microsoft Visual Studio\\2019\\Enterprise", "Microsoft Visual Studio\\2017\\Professional", "Microsoft Visual Studio\\2017\\Enterprise", "" }) + { + msBuild = Path.Combine(programFilesDirectory, msBuildBasePath, "MSBuild", version, "Bin", "msbuild.exe"); + if (File.Exists(msBuild)) + return msBuild; + } } var netFx = System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory(); msBuild = Path.Combine(netFx, "msbuild.exe"); diff --git a/source/OctoPack.Tests/Integration/SampleSolutionBuildFixture.cs b/source/OctoPack.Tests/Integration/SampleSolutionBuildFixture.cs index 8a64920..302a78e 100644 --- a/source/OctoPack.Tests/Integration/SampleSolutionBuildFixture.cs +++ b/source/OctoPack.Tests/Integration/SampleSolutionBuildFixture.cs @@ -5,7 +5,7 @@ namespace OctoPack.Tests.Integration { - [TestFixture] + [TestFixture, Category("Integration Tests")] public class SampleSolutionBuildFixture : BuildFixture { [Test] @@ -13,7 +13,7 @@ public void ShouldBuildAtSolutionLevel() { MsBuild("Samples.sln /p:RunOctoPack=true /p:OctoPackPackageVersion=1.0.9 /p:Configuration=Release /v:m"); - AssertPackage(@"Sample.ConsoleApp\obj\octopacked\Sample.ConsoleApp.1.0.9.nupkg", + AssertPackage(@"Sample.ConsoleApp\obj\octopacked\Sample.ConsoleApp.1.0.9.nupkg", pkg => pkg.AssertContents( "Sample.ConsoleApp.exe", "Sample.ConsoleApp.exe.config", diff --git a/source/build/OctoPack.targets b/source/build/OctoPack.targets index 8e90f58..c7c6906 100644 --- a/source/build/OctoPack.targets +++ b/source/build/OctoPack.targets @@ -9,7 +9,7 @@ OctoPack - + @@ -40,7 +40,7 @@ false - @@ -67,13 +67,13 @@ - + - + - +