Skip to content

1.7.0

Compare
Choose a tag to compare
@wwwlicious wwwlicious released this 26 Jan 15:28
· 241 commits to master since this release

As part of this release we had 7 issues closed.

The main feature of this release is the improvement in project parsing and test project detection for both pre and post 2017 project formats.

You can now detect the type of project using:

CustomProjectParserResult result = ParseProject("./some.csproj", "Debug");

result.IsNetStandard; // true | false
result.IsNetCore; // true | false
result.IsNetFramework; // true | false
result.IsVS2017ProjectFormat; // true | false

Combined with the existing methods below creates a powerful way to filter and route your projects during your build pipeline.

result.IsLibrary(); // true | false
result.IsType(ProjectTypes.FSharp); // true | false
result.IsWebApplication(); // true | false

The flags are not mutually exclusive so support those projects with multi-targeting configured.
The support for multi-targeting has also been improved with new methods being added as follows:

result.GetOutputPaths(); // uses target frameworks to generate all of the artifact output paths (dll's, exe's)
result.GetAssemblyFilePaths(); // again will now include all possible artifact output paths (dll's, exe's)

Checking for packages, references and cli tools in your projects has also improved

// packages
result.HasPackage("nunit"); // true | false 
result.HasPackage("nunit", "net45"); // also supports targetframework specific package lookups
var pkg = result.GetPackage("nunit"); // returns PackageReference object or null

// references
result.HasReference("xunit.core"); // true | false
result.GetReferemce("xunit.core"); // returns ProjectAssemblyReference object or null

// dotnet cli tools
result.HasDotNetCliToolReference("dotnet-xunit"); // true | false
result.GetDotNetCliToolReference("dotnet-xunit"); // returns DotNetCliToolReference object or null

The test detection makes the above even easier to work across a range of projects with the following new test extensions, especially if you are using dotnet test for running your tests.

result.IsTestProject(); // true | false (currently works for nunit, xunit, mstest, fsunit, fixie, Expecto)
result.IsDotNetCliTestProject(); // true is test project can be executed with 'dotnet test' otherwise false
result.IsFrameworkTestProject(); // true if project will require a non 'dotnet test' runner to be executed

There are a few more minor improvements also. Check the issues below for more details.

Bug

  • #54 Fix detection of netcore, netframework and add netstandard

Improvements

  • #58 Populate project references for vs2017 project formats
  • #56 Feature/testprojectdetection
  • #55 Updating output paths to support TargetFrameworks
  • #53 Test project detection
  • #52 Add support for ienumerable iteration for dump extension
  • #51 Make detecting TargetFramework for PackageReference more robust