dotnet发布时带/ p:PublishProfile =?

Sam*_*Sam 18 .net c# asp.net

我正在尝试使用特定的发布配置文件pubxml文件调用"dotnet publish",如下所示:

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

但是,我尝试的所有内容似乎都会导致默认行为,而/ p:PublishProfile部分将被忽略.

dotnet publish /p:PublishProfile="MyFolderProfile"
Run Code Online (Sandbox Code Playgroud)

不起作用,并且没有记录错误,构建到"/ obj"下的默认位置.

我注意到,故意不正确的命令具有相同的结果,例如:

dotnet publish /p:PublishProfile="MyFolderProfile-XXXXX"
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么? - 任何指针将不胜感激!

A. *_*Don 14

不久前我遇到了同样的问题。我设法通过调用来修复它:

dotnet build [projectname] /p:PublishProfile=[PublishProfile]
Run Code Online (Sandbox Code Playgroud)

  • 添加 `/p:DeployOnBuild=true` 以在构建后部署 - 请参阅此处:https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/visual-studio-publish-profiles?view =aspnetcore-3.1#publish-profiles (3认同)
  • “[项目名称]”会是什么? (2认同)

Sau*_*001 14

我的回复晚了。我的解决方案有一个简单的 .NET Core 控制台应用程序ConsoleAppCore.csproj。我曾经使用Visual Studio IDE名称生成发布配置文件,FolderProfile.pubxml然后以下命令对我有用:

相对路径 - 从解决方案根

dotnet publish ConsoleAppCore\ConsoleAppCore.csproj /p:PublishProfile=ConsoleAppCore\Properties\PublishProfiles\FolderProfile.pubxml
Run Code Online (Sandbox Code Playgroud)

绝对路径 - 从任何位置

dotnet publish "C:\work\ConsoleAppCore\ConsoleAppCore.csproj"   "/p:PublishProfile=C:\work\ConsoleAppCore\Properties\PublishProfiles\FolderProfile.pubxml"
Run Code Online (Sandbox Code Playgroud)

在 Azure 开发运营上

任务名称=.NET Core

任务版本=2

命令= 发布

项目路径=我把它留空了

参数=

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

在Azure Dev Ops构建管道方案中,我已将输出重定向到$(Build.ArtifactStagingDirectory). 我还有一个Publish Artifact任务,它被配置为使用暂存目录变量。

我使用了发布配置文件 XML 文件,因为我想要一个文件来管理Azure Devops上的完整行为。所有参数都依赖于单个文件简化了 Azure 上的管理。

Azure Dev ops - Artifacts Explorer

该Publish Artifact任务为我创建了一个掉落,这就是它的外观。请注意,资源管理器中的文件名与任务中 指定的名称和--output选项一致dotnet publish在此处输入图片说明

  • 看起来完整/相对路径现在不应该工作,根据 https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-publish “如果在设置`时指定路径和文件扩展名PublishProfile` 属性,它们将被忽略。MSBuild 默认情况下查找 _Properties/PublishProfiles_ 文件夹并假定 _pubxml_ 文件扩展名。要指定包括扩展名的路径和文件名,请设置 `PublishProfileFullPath` 属性而不是 `PublishProfile` 属性。” (4认同)
  • 不幸的是,这在 Linux 上似乎并不以同样的方式工作。发布配置文件将被简单地忽略。 (2认同)

Lan*_*kin 10

文件夹发布存在一个未解决的(截至 2021 年 10 月)问题,具有类似的症状https://github.com/dotnet/sdk/issues/12490

我现在使用的解决方法是手动编辑*.pubxmlVS.Net 生成的文件,使PublishUrl和PublishDir键具有相同的值。

这样就可以dotnet publish -p:PublishProfile=...按预期工作了。

  • 请注意,正如线程中提到的,这仍然忽略诸如“DeleteExistingFiles”之类的内容 (3认同)
  • 这就是我的解决办法。谢谢! (2认同)

and*_*ewb 6

您可能需要完整的路径,例如

dotnet publish -c Release /p:PublishProfile=Properties\PublishProfiles\FolderProfile.pubxml
Run Code Online (Sandbox Code Playgroud)