Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

dotnet publish with /p:PublishProfile=?

I'm trying to call "dotnet publish" with a specific publish profile pubxml file as documented here :

https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-2.1&tabs=aspnetcore2x

However, everything I try seems to result in the default behaviour, and the /p:PublishProfile part is ignored.

dotnet publish /p:PublishProfile="MyFolderProfile"

Doesn't work, and logs no error, building to the default location under "/obj".

I do note that an intentionally incorrect command has the same result though, eg:

dotnet publish /p:PublishProfile="MyFolderProfile-XXXXX"

What am I doing wrong? - Any pointers would be greatly appreciated!

like image 753
Sam Avatar asked May 14 '18 14:05

Sam


People also ask

What does dotnet Publish command do?

Description. dotnet publish compiles the application, reads through its dependencies specified in the project file, and publishes the resulting set of files to a directory. The output includes the following assets: Intermediate Language (IL) code in an assembly with a dll extension.

What is a Pubxml file?

pubxml file contains settings that apply to one publish profile. The values you enter in the Publish Web wizard are stored in these files. Creating a .wpp.targets File. When you want to configure settings that apply to all profiles you use in a project, you create a . wpp.

How do I Publish a .NET solution?

On the Target tab of the Publish page, select Folder, and then select Next. On the Specific Target tab of the Publish page, select Folder, and then select Next. On the Location tab of the Publish page, select Finish. On the Publish tab of the Publish window, select Publish.


3 Answers

My response is late. My solution has a simple .NET Core console application ConsoleAppCore.csproj. I used Visual Studio IDE to generate a publish profile with the name FolderProfile.pubxml and then the following commands worked for me:

Relative path - From the solution root

dotnet publish ConsoleAppCore\ConsoleAppCore.csproj /p:PublishProfile=ConsoleAppCore\Properties\PublishProfiles\FolderProfile.pubxml

Absolute path - From any location

dotnet publish "C:\work\ConsoleAppCore\ConsoleAppCore.csproj"   "/p:PublishProfile=C:\work\ConsoleAppCore\Properties\PublishProfiles\FolderProfile.pubxml"

On Azure dev ops

Task name=.NET Core

Task version=2

Command=publish

Path to projects=I left this empty

Arguments=

$(System.DefaultWorkingDirectory)\ConsoleAppCore\ConsoleAppCore.csproj /p:PublishProfile=$(System.DefaultWorkingDirectory)\ConsoleAppCore\Properties\PublishProfiles\FolderProfile.pubxml  --configuration $(BuildConfiguration) --output  $(Build.ArtifactStagingDirectory)\ConsoleAppCore-Publish\

In the Azure Dev Ops build pipeline scenario, I have redirected the output to a folder under $(Build.ArtifactStagingDirectory) . I also have a Publish Artifact task which is configured to use the staging directory variable.

I have made use of the publish profile XML file because I wanted a single file to govern the complete behavior while on Azure Devops. Relying on a single file for all parameters simplifies management on Azure.

Azure Dev ops - Artifacts Explorer

The Publish Artifact task created a drop for me and this is how it looks. Please notice that the file name in the explorer tallies with the name specified along with the --output option in the dotnet publish task enter image description here

like image 57
Sau001 Avatar answered Sep 29 '22 19:09

Sau001


I ran into the same issue a while ago. I managed to fix it by instead calling:

dotnet build [projectname] /p:PublishProfile=[PublishProfile]
like image 42
A. Don Avatar answered Sep 29 '22 19:09

A. Don


You might need the full path, e.g.

dotnet publish -c Release /p:PublishProfile=Properties\PublishProfiles\FolderProfile.pubxml
like image 10
andrewb Avatar answered Sep 29 '22 19:09

andrewb