The Next Generation Platform is Coming - Get Ready Now!
by jincod
GitHub Readme.md
This is the Heroku buildpack for ASP.NET Core.
The Buildpack supports C# and F# projects. It searchs through the repository's folders to locate a Startup.*
or Program.*
file. If found, the .csproj
or .fsproj
in the containing folder will be used in the dotnet publish <project>
command.
If repository contains multiple Web Applications (multiple Startup.*
or Program.*
), PROJECT_FILE
and PROJECT_NAME
environment variables allow to choose project for publishing.
heroku buildpacks:set jincod/dotnetcore
heroku buildpacks:set https://github.com/jincod/dotnetcore-buildpack
heroku buildpacks:set https://github.com/jincod/dotnetcore-buildpack#preview
heroku buildpacks:set https://github.com/jincod/dotnetcore-buildpack#version
Available releases
More info
You cannot run migrations with the dotnet ef
commands using .NET Local Tools once the app is built. Alternatives include:
dotnet new tool-manifest
dotnet tool install dotnet-ef
ASPNETCORE_ENVIRONMENT
environment variable is set to Production
. ASP.NET Core scaffolding tools may create files that explicitly set it to Development
. Heroku config will override this (heroku config:set ASPNETCORE_ENVIRONMENT=Production
)..csproj
file:<Target Name="PrePublishTarget" AfterTargets="Publish">
<Exec Command="dotnet ef database update" />
</Target>
If you are using Heroku Postgres addon, then Heroku provides the database connection string as environment variable DATABASE_URL
. In order to use this in an Npgsql connection string, do something like following:
using System.Text.RegularExpressions;
...
// Replace AppContext with your own DbContext Class
builder.Services.AddDbContext<AppContext>(options =>
{
if (Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT") == "Production")
{
var m = Regex.Match(Environment.GetEnvironmentVariable("DATABASE_URL")!, @"postgres://(.*):(.*)@(.*):(.*)/(.*)");
options.UseNpgsql($"Server={m.Groups[3]};Port={m.Groups[4]};User Id={m.Groups[1]};Password={m.Groups[2]};Database={m.Groups[5]};sslmode=Prefer;Trust Server Certificate=true");
}
else // In Development Environment
{
// So, use a local Connection
options.UseNpgsql(builder.Configuration.GetValue<string>("CONNECTION_STRING"));
}
});
heroku buildpacks:set jincod/dotnetcore
heroku buildpacks:add --index 1 heroku/nodejs
Using Multiple Buildpacks for an App
heroku config:set HEROKUISH=true
If you have multiple projects in a monorepo and wish to treat them as separate process types:
PROJECT_FILE
config var to a solution file that references them.Procfile
that enumerates the desired process types, for example:web: cd $HOME/heroku_output && ./MySolution.Web
worker: cd $HOME/heroku_output && ./MySolution.Worker
If this project help you, you can give me a cup of coffee ☕
Copy the snippet above into CLI.
We use three kinds of cookies on our websites: required, functional, and advertising. You can choose whether functional and advertising cookies apply. Click on the different cookie categories to find out more about each category and to change the default settings.
Privacy Statement
Required cookies are necessary for basic website functionality. Some examples include: session cookies needed to transmit the website, authentication cookies, and security cookies.
Functional cookies enhance functions, performance, and services on the website. Some examples include: cookies used to analyze site traffic, cookies used for market research, and cookies used to display advertising that is not directed to a particular individual.
Advertising cookies track activity across websites in order to understand a viewer’s interests, and direct them specific marketing. Some examples include: cookies used for remarketing, or interest-based advertising.