我有以下命令行
dotnet build "path to the project/MyProject.csproj" /P:DeleteExistingFiles=true /P:SkipExtraFilesOnServer=false /P:DeployOnBuild=true /P:PublishProfile=linux-publish-profile /P:AllowUntrustedCertificate=true /P:Configuration=Release /P:Username=$linux_user /P:Password=987lskdjfhw434k5hökjk345345k3j45
以及以下发布配置文件
<Project>
<PropertyGroup>
<WebPublishMethod>ZipDeploy</WebPublishMethod>
<IsLinux>true</IsLinux>
<ResourceId>/subscriptions/some subscription/resourceGroups/some-resource-group/providers/Microsoft.Web/sites/my-app</ResourceId>
<ResourceGroup>some-resource-group</ResourceGroup>
<LaunchSiteAfterPublish>true</LaunchSiteAfterPublish>
<SiteUrlToLaunchAfterPublish>http://my-app-stage.azurewebsites.net</SiteUrlToLaunchAfterPublish>
<PublishProvider>AzureWebSite</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<ProjectGuid>b6eccaec-519f-41b2-a3ee-d7bdb6bbf440</ProjectGuid>
<PublishUrl>https://my-app-stage.scm.azurewebsites.net/</PublishUrl>
<UserName>$linux-user</UserName>
<_SavePWD>true</_SavePWD>
</PropertyGroup>
</Project>
该部署确实适用于 VS 2022 中的此发布配置文件。 但不是作为命令行。 命令行确实可以将配置文件发布到 Windows 应用程序服务。
我创建了一个示例项目并通过命令行将其部署到 Azure 应用服务。
不要使用
dotnet build
,而是使用 dotnet msbuild
在复杂的构建和部署任务中获得更多控制和灵活性。
我引用了这个Msdoc并使用以下命令来部署应用程序。
dotnet publish -c Release
dotnet msbuild "path/to/your/project/MyLinuxApp.csproj" /p:DeployOnBuild=true /p:PublishProfile="path/to/linuxapp18.PublishSettings" /p:AllowUntrustedCertificate=true /p:UserName=$LINUX_USER /p:Password=$LINUX_PASSWORD
.csproj
文件中添加运行时标识符 (linux-x64) 以将应用程序部署到 Azure 应用服务 (Linux)。 <RuntimeIdentifiers>linux-x64</RuntimeIdentifiers>
.csproj 文件:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net8.0</TargetFramework>
<Nullable>enable</Nullable>
<ImplicitUsings>enable</ImplicitUsings>
<RuntimeIdentifiers>linux-x64</RuntimeIdentifiers>
</PropertyGroup>
</Project>
部署后输出: