I am a little confused about the difference between build and publish in the visual studio.
What is the difference between building a program and publishing a program?
Publishing creates the set of files that are needed to run your application. To deploy the files, copy them to the target machine.
Deploy should mean take all of my artifacts and either copy them to a server, or execute them on a server. It should truly be a simple process. Build means, process all of my code/artifacts and prepare them for deployment. Meaning compile, generate code, package, etc.
Deployment: It is a process of deploying the pre compiled dll's to the IIS server. Publish: It is a process of creating precompiled dll's. Web Hosting: It is similar to the process of deployment of a website. Deployment: It is a process of deploying the pre compiled dll's to the IIS server.
Build compiles the source code into a (hopefully) runnable application. Publish takes the results of the build, along with any needed third-party libraries and puts it somewhere for other people to run it. It may also make some changes to make the app runnable in the destination, depending on the framework and type of app (e.g. a console app may just copy files, while a web app may set up the configs based on the destination).
Your confusion may come from the fact that Publish will also build the application if it thinks it needs to (e.g. if there are source code changes).
There are some significant differences between Build and Publish targeting .NET Framework application vs .NET Core applications:
Building .NET Framework applications will generate the same files as Publish. It will create all the dependencies as binaries including external dependencies (NuGet packages, for instance). So the product of dotnet build
is ready to be transferred to another machine to run.
Building .NET Core applications, if the project has third-party dependencies, such as libraries from NuGet, they're resolved from the NuGet cache and aren't available with the project's built output. Therefore the product of dotnet build
isn't ready to be transferred to another machine to run. You need to run Publish to get all 3rd party dependencies as binaries in output folder.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With