aspnetcore/test/Shared/MsBuildFixture.cs

40 lines
1.5 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.IO;
using Microsoft.Extensions.ProjectModel.Internal;
using NuGet.Versioning;
namespace Microsoft.Extensions.ProjectModel.Tests
{
public class MsBuildFixture
{
// TODO remove this when preview3 stabilizies
private readonly SemanticVersion _minMsBuildVersion = SemanticVersion.Parse("1.0.0-preview3-003748");
// TODO remove when our CI updates to using MSBuild or when Microsoft/msbuild#4213 is resolved
internal MsBuildContext GetMsBuildContext()
{
// for CI
var sdk = DotNetCoreSdkResolver.DefaultResolver.ResolveLatest();
// for dev work in VS
if (SemanticVersion.Parse(sdk.Version) < _minMsBuildVersion)
{
var home = Environment.GetEnvironmentVariable("USERPROFILE")
?? Environment.GetEnvironmentVariable("HOME");
var dotnetHome = Path.Combine(home, ".dotnet");
var resovler = new DotNetCoreSdkResolver(dotnetHome);
sdk = resovler.ResolveLatest();
}
if (SemanticVersion.Parse(sdk.Version) < _minMsBuildVersion)
{
throw new InvalidOperationException($"Version of .NET Core SDK found in '{sdk.BasePath}' is not new enough for these tests.");
}
return MsBuildContext.FromDotNetSdk(sdk);
}
}
}