The .NET Project System for Visual Studio
Перейти к файлу
David Kean 4824ff4da3
Center bullets
2018-04-30 12:02:57 +10:00
.github Create a pull request template with the ask mode template. 2017-04-12 23:49:01 -07:00
build Merge remote-tracking branch 'upstream/dev15.7.x' into merges/dev15.7.x-to-master 2018-04-27 10:14:46 -07:00
docs Center bullets 2018-04-30 12:02:57 +10:00
setup Fix XAML rule setup 2018-01-29 14:32:57 -08:00
src Merge remote-tracking branch 'upstream/dev15.7.x' into merges/dev15.7.x-to-master 2018-04-27 10:14:46 -07:00
.editorconfig Merge branch 'master' into dev15.7.x 2018-03-15 14:42:28 +11:00
.gitattributes Treat registry files as text 2017-05-25 11:03:39 +10:00
.gitignore New build infrastructure (RepoToolset v34) 2017-08-29 14:26:09 -07:00
CONTRIBUTING.md docs: make solitications for help more discoverable on GitHub 2018-03-31 09:34:54 +11:00
Directory.Build.props Target .NET 4.6.1 instead of 4.6.0. 2018-02-20 16:05:56 -08:00
LICENSE.md Rename LICENSE and THIRD-PARTY-NOTICES to md 2017-04-03 13:30:00 +10:00
Launch.cmd docs: added shortcut to launch vs with recently built bits 2018-04-01 09:50:53 +10:00
ProjectSystem.sln Remove code names from sln 2018-03-19 14:25:32 +11:00
README.md Add link to feature differences 2018-04-30 11:51:36 +10:00
THIRD-PARTY-NOTICES.md Rename LICENSE and THIRD-PARTY-NOTICES to md 2017-04-03 13:30:00 +10:00
Test.cmd Handle spaces in build scripts 2018-03-09 13:20:45 +11:00
build.cmd Handle spaces in build scripts 2018-03-09 13:20:45 +11:00
codecov.yml Fix issues with PDB extraction and file paths in the reported data 2018-03-14 01:21:29 -05:00
netci.groovy Disable integration tests 2018-04-04 13:47:01 -05:00

README.md

C#, F# and Visual Basic project system

Release Branch Unit Tests (Debug) Unit Tests (Release) Coverage (Debug)
15.0.x dev15.0.x Build Status Build Status
15.6 dev15.6.x Build Status Build Status
15.7 dev15.7.x Build Status Build Status codecov
15.8 master Build Status Build Status codecov

This repository contains the new C#, F# and Visual Basic project system that has been rewritten on top of the Common Project System (CPS). In Visual Studio 2017, this project system is used by default for Shared Projects (C# and Visual Basic), and .NET Core (C#) project types, however, long term it will be the basis of all C#, F# and Visual Basic project types. For a list of feature differences between the project systems, see Feature Comparison.

The existing C# and Visual Basic project systems (csproj.dll and msvbprj.dll), which first shipped back in Visual Studio.net nearly 15 years ago, have served us well but are:

  • Native and COM-based
  • Single threaded and bound to the UI thread
  • Hard to extend outside of aggregation via the use of <ProjectTypeGuids> and sub types (flavors)
  • Tied to Visual Studio

The new C#, F# and Visual Basic project system is:

  • Managed and managed-interface based
  • Multi-threaded, scalable, and responsive
  • Easy to extend via the use of the Managed Extensibility Framework (MEF) and composable. Many parties, including 3rd parties, can contribute to a single project system
  • Hostable outside of Visual Studio

What is a project system?

A project system sits between a project file on disk (for example, .csproj and .vbproj) and various Visual Studio features including, but not limited to, Solution Explorer, designers, the debugger, language services, build and deployment. Almost all interaction that occurs with files contained in a project file, happens through the project system.

There are many technologies that come together to make up the .NET project system:

  • MSBuild provides the build engine and file format.
  • SDK provides the MSBuild tasks and targets needed to build .NET projects.
  • Common Project System provides the base building blocks for the project system including (but not limited to) project tree, build and debugger coordination and Visual Studio integration.
  • Roslyn provides C# and Visual Basic language support including compilers, IntelliSense, refactorings, analyzers and code fixes.
  • Visual F# tools provides F# language support.
  • CLI is the .NET command-line interface for building, running and interacting with .NET projects.

image

How do I engage and contribute?

We welcome you to try things out, file issues, make feature requests and join us in design conversations. If you are looking for something to work on, take a look at our help wanted issues for a great place to start. Also be sure to check out our contributing guide.

This project has adopted a code of conduct adapted from the Contributor Covenant to clarify expected behavior in our community. This code of conduct has been adopted by many other projects. For more information see Contributors Code of conduct.