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/
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
See https://github.com/dotnet/docs/issues/19677. The PublishProfile is only the name, any directory before it is disregarded.
PublishProfile property is treated as a file name and the directory is constructed separately.
The PublishProfileFullPath
property should be used if specifying a custom path.
You might need the full path, e.g.
dotnet publish -c Release /p:PublishProfile=Properties\PublishProfiles\FolderProfile.pubxml
I ran into the same issue a while ago. I managed to fix it by instead calling:
dotnet build [projectname] /p:PublishProfile=[PublishProfile]
I used this on VS build events
dotnet publish $(SolutionDir)DIRECTORI_1/PROJECT_1.csproj -c Release -o C:\Deployments\FOLDER_1
Try this based on: https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view=aspnetcore-3.1#publish-profiles
dotnet build ..\project\project.csproj /p:DeployOnBuild=true -c Release /p:PublishProfile="Folder Staging"
I included a relative csproj path and a publish profile name with a space in it to clarify how to deal with those cases. The -c
flag is optionally used to specify the configuration to use.