From 555dbb03e4325415c94c07bf21ceed0540902ba9 Mon Sep 17 00:00:00 2001 From: Daniel Plaisted Date: Thu, 30 Jun 2016 15:11:52 -0700 Subject: [PATCH] Add instructions for targeting .NET Core with MSBuild projects (dotnet/corefx#9403) * Add step by step instructions for using MSBuild to target .NET Core * Rearrange and edit instructions for targeting .NET Core with MSBuild * Link to updated NuGet extension for VS, add instructions allowing PCL/dnxcore50 packages to be referenced * Reformatting * Update existing getting started instructions * Change prerequisite to VS 2015 Update 3, which fixes error that AnyCPU isn't supported * Add comments for MSBuild properties * Recommend project.json for new projects * Add CoreApp as another recommendation to start with * Start with Console app template instead of portable library, use Microsoft.NETCore.App package * Fix indentation Commit migrated from https://github.com/dotnet/corefx/commit/79a7c578cce7cf82eb4c2bf6d0b0fb5dba2cb895 --- .../libraries/project-docs/getting-started-core.md | 85 +-------------- .../pcl-targets-dialog-net46-aspnetcore10.png | Bin 0 -> 35612 bytes .../project-docs/target-dotnetcore-with-msbuild.md | 118 +++++++++++++++++++++ 3 files changed, 120 insertions(+), 83 deletions(-) create mode 100644 docs/libraries/project-docs/pcl-targets-dialog-net46-aspnetcore10.png create mode 100644 docs/libraries/project-docs/target-dotnetcore-with-msbuild.md diff --git a/docs/libraries/project-docs/getting-started-core.md b/docs/libraries/project-docs/getting-started-core.md index 34bb33d..4ee2817 100644 --- a/docs/libraries/project-docs/getting-started-core.md +++ b/docs/libraries/project-docs/getting-started-core.md @@ -1,87 +1,6 @@ Getting Started Writing a .NET Core app and Class Library ========================================================= -These instructions are basic and a work in progress. They will be improving a lot over time. These instructions are current for Visual Studio 2015 Update 1. +For general instructions on how to get started with .NET Core, see the [.NET Core Documentation](https://dotnet.github.io/docs/) site. -Once you've followed the steps in this document, use the following sample to see the changes you need to make to your project: https://github.com/dotnet/corefxlab/tree/master/samples/NetCoreSample. - -Installing the tools -==================== - -1. Install Visual Studio 2015 - [https://www.visualstudio.com/downloads/download-visual-studio-vs](https://www.visualstudio.com/downloads/download-visual-studio-vs) -
Ensure you're running Visual Studio 2015 Update 1 (in Help->About in Visual Studio, you should see version 14.0.24020.00 or higher. If not, update in Tools->Extensions and Updates.) -2. Check "Universal Windows App Development Tools" in the initial install or modify the install to include it. - -![VS Install](https://dotnetdocs.blob.core.windows.net/getting-started/vs-install.png) - -Create a New Class Library -========================== - -1. File > New - -![New Project](https://dotnetdocs.blob.core.windows.net/getting-started/new-project.png) - -2. Select ".NET Framework 4.6" and "ASP.NET Core 5.0" - -![Portable](https://dotnetdocs.blob.core.windows.net/getting-started/portable.png) - -3. At this point the project should compile - -Add support for the Platform Standard ---------------------------- - -Currently to enable leveraging packages that target the Platform Standard you need do to some manual steps - -1. Manually edit your csproj file by right clicking on the project and select unload and then right click and select edit. Remove this line: -``` - -``` -And replace it with this: -``` - -``` -Add this at the end of the file, before the closing Project tag: -``` - - .NETPlatform,Version=v5.4 - -``` - -2. Save and close your project file and then reload it. - -3. Open project.json file and change "dotnet" to "dotnet5.4". - -![project.json](https://dotnetdocs.blob.core.windows.net/getting-started/project-json.png) - -4. Save it. -5. At this point your project should be in a buildable state and targeting generation 5.4. - -Update your packages to the latest ----------------------------------- -To update to the RC1 packages, adjust your project.json as follows: - ``` - "dependencies": { - "Microsoft.NETCore": "5.0.1-beta-23516", - "Microsoft.NETCore.Portable.Compatibility": "1.0.1-beta-23516" - }, - ``` -To trigger the update to the latest version of the meta-packages right click on references and chose "Manage Nuget Packages": - 1. Click "Updates" tab - 2. Check the "Include prerelease" check-box - 3. Click the checkboxes for the packages, and click "Update" - -![NuGet Package Manager](https://dotnetdocs.blob.core.windows.net/getting-started/nuget-package-manager.png) - - -Advanced: Updating and using nuget.exe -====================================== - -Future changes to the CoreCLR/CoreFX packages may require newer versions of Nuget than are currently in Visual Studio. In that case, you will need to follow these directions: - -1. Download the latest nuget.exe commandline client. This is required until a new NuGet Visual Studio extension is available. Browse to https://www.myget.org/gallery/nugetbuild and download the `NuGet.Commandline` package. Rename the extension from `.nupkg` to `.zip` and extract nuget.exe from the tools folder. -2. Disable NuGet's built-in package restore since that won't be using the latest nuget.exe we just downloaded. Goto Tools | NuGet Package Manager | Package Manager Settings | General. -![Disable Restore](https://cloud.githubusercontent.com/assets/8228359/11126436/d3b9b9ca-8923-11e5-9de1-f6fcdc46ebbd.png) -3. Setup ".NET Core Dev Feed" package source -> "http://myget.org/F/dotnet-core". Goto Tools | NuGet Package Manager | Package Manager Settings | Package Sources. -![NuGet Feed](https://dotnetdocs.blob.core.windows.net/getting-started/nuget-feed.png) -4. In the Nuget Package Manager, above, follow the same steps, choosing '.NET Core Dev Feed' instead of the normal Nuget.org feed. -5. Run 'nuget.exe restore project.lock.json' +There are also instructions available for [targeting .NET Core with MSBuild](target-dotnetcore-with-msbuild.md). \ No newline at end of file diff --git a/docs/libraries/project-docs/pcl-targets-dialog-net46-aspnetcore10.png b/docs/libraries/project-docs/pcl-targets-dialog-net46-aspnetcore10.png new file mode 100644 index 0000000000000000000000000000000000000000..f3685911c43644faed31169ef7c3f1e7e17671d8 GIT binary patch literal 35612 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 literal 0 HcmV?d00001 diff --git a/docs/libraries/project-docs/target-dotnetcore-with-msbuild.md b/docs/libraries/project-docs/target-dotnetcore-with-msbuild.md new file mode 100644 index 0000000..73da087 --- /dev/null +++ b/docs/libraries/project-docs/target-dotnetcore-with-msbuild.md @@ -0,0 +1,118 @@ +Using MSBuild to build .NET Core projects +========================================= + +The .NET Core tooling is going to [move from project.json to MSBuild based projects](https://blogs.msdn.microsoft.com/dotnet/2016/05/23/changes-to-project-json/). +We expect the first version of the .NET Core tools that use MSBuild to ship along with Visual Studio "15". However, it is possible to use MSBuild for .NET Core +projects today, and this page shows how. + +We recommend that most people targeting .NET Core with *new* projects today use the default tooling experience with project.json. This is because we haven't yet added +support to MSBuild for a lot of the benefits that project.json has, because a lot of the ASP.NET based tooling will not work with MSBuild today, and because when we +do release .NET Core tooling which uses MSBuild, it will be able to automatically convert from project.json to MSBuild based projects. + +You may want to use MSBuild to target .NET Core for existing projects that already use MSBuild that you want to port to .NET Core, or if you are using +MSBuild's extensibility in your build for scenarios that are not well supported for project.json projects. + +Prerequisites +============= + +- [Visual Studio 2015 Update 3 RC](https://www.visualstudio.com/downloads/visual-studio-prerelease-downloads#sec1) or higher +- [.NET Core tools for Visual Studio](https://www.visualstudio.com/downloads/download-visual-studio-vs) +- NuGet Visual Studio extension [v3.5.0-beta](https://dist.nuget.org/visualstudio-2015-vsix/v3.5.0-beta/NuGet.Tools.vsix) or later + +Creating a library targeting .NET Core +====================================== + +- File > New > Project > Class Library (Portable) + + ![New Project](https://dotnetdocs.blob.core.windows.net/getting-started/new-project.png) + +- Select ".NET Framework 4.6" and "ASP.NET Core 1.0" + + ![Portable targets dialog](pcl-targets-dialog-net46-aspnetcore10.png) + +- In the "Library" tab of the project properties, click on the "Target .NET Platform Standard" link, and click "Yes" in the dialog that is shown +- In the `project.json` file: + - Change the version number of the `NETStandard.Library` package to `1.5.0-rc2-24027` (this is the .NET Core RC2 version of the package). + - Add the below `imports` definition inside the `netstandard1.5` framework definition. This will allow your project to reference .NET Core compatible + NuGet packages that haven't been updated to target .NET Standard + + ```json + "netstandard1.5": { + "imports": [ "dnxcore50", "portable-net452" ] + } + ``` + +Creating a .NET Core console application +======================================== +Building a console application for .NET Core requires some customization of the MSBuild build process. A sample project for a .NET Core console application +is [CoreApp](https://github.com/dotnet/corefxlab/tree/master/samples/NetCoreSample/CoreApp) in the [corefxlab](https://github.com/dotnet/corefxlab) repo. +Another good option is to start with [coretemplate](https://github.com/mellinoe/coretemplate), which uses separate MSBuild targets files to target .NET Core +instead of putting the the changes directly in the project file. + +It is also possible to start by creating a project in Visual Studio and modify it to target .NET Core. The instructions below show the minimal steps to get this working. +In contrast to CoreApp or coretemplate, a project created this way won't include configurations for targeting Linux and Mac OS. + +Creating a .NET Core console application from Visual Studio +=========================================================== + +- File > New > Project > Console Application +- In "Build" tab of the project properties, select "All Configurations" and change the "Platform Target" to "x64" +- Delete the `app.config` file from the project +- Add the following project.json file to the project: + + ```json + { + "dependencies": { + "Microsoft.NETCore.App": "1.0.0-rc2-3002702" + }, + "runtimes": { + "win7-x64": { }, + "ubuntu.14.04-x64": { }, + "osx.10.10-x64": { } + }, + "frameworks": { + "netcoreapp1.0": { + "imports": [ "dnxcore50", "portable-net452" ] + } + } + } + ``` + +- Open the project's XML for editing (in Visual Studio, right click on the project -> Unload Project, right click again -> Edit MyProj.csproj) + - Remove all the default `Reference` items (to `System`, `System.Core`, etc.) + - Add the following properties to the first `PropertyGroup` in the project: + + ```xml + .NETCoreApp + v1.0 + win7 + true + $(NoWarn);1701 + ``` + + - Add the following at the end of the file (after the import of `Microsoft.Portable.CSharp.Targets`: + + ```xml + + + <_TargetFrameworkDirectories>$(MSBuildThisFileDirectory) + <_FullFrameworkReferenceAssemblyPaths>$(MSBuildThisFileDirectory) + + + true + false + + + Program + $(TargetDir)dotnet.exe + $(TargetPath) + {2E36F1D4-B23C-435D-AB41-18E608940038} + + ``` + + - Close the .csproj file, and reload the project in Visual Studio + +- You should be able to run your program with F5 in Visual Studio, or from the command line in the output folder with `dotnet MyApp.exe` \ No newline at end of file -- 2.7.4