不使用 PublishProfile 发布 ASP.NET MVC 项目

问题描述 投票:0回答:1

我想使用 msbuild 通过命令提示符发布我的 ASP.NET MVC 项目。

当我使用

publishProfile
时,它工作正常并在所需位置生成发布文件夹;但是当我使用命令而不是
publishProfile
时,它不会生成发布文件夹。

这是发布配置文件:

<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <WebPublishMethod>FileSystem</WebPublishMethod>
    <PublishProvider>FileSystem</PublishProvider>
    <LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
    <LastUsedPlatform>Any CPU</LastUsedPlatform>
    <SiteUrlToLaunchAfterPublish />
    <LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
    <ExcludeApp_Data>False</ExcludeApp_Data>
    <publishUrl>D:\Published</publishUrl>
    <DeleteExistingFiles>True</DeleteExistingFiles>
  </PropertyGroup>
</Project>

当我使用此命令时,它工作正常并在

D:\Published
处生成输出(如 PublishProfile 中所述)

msbuild "D:\secureamr_ss_premier_500_branch\source\WebSite\SecureAMRWeb.sln" /p:DeployOnBuild=true /p:PublishProfile="D:\secureamr_ss_premier_500_branch\source\WebSite\SecureAMRWeb\Properties\PublishProfiles\FolderProfile.pubxml"

但是当我使用此命令时(在此命令中,我删除了

publishProfile
,而是在
msbuild
命令中包含了publishProfiles 的所有属性),它没有在
D:\Published
处生成任何结果(如命令中指定的)

msbuild "D:\secureamr_ss_premier_500_branch\source\WebSite\SecureAMRWeb.sln" /p:DeployOnBuild=true 
/p:WebPublishMethod=FileSystem 
/p:PublishProvider=FileSystem 
/p:publishUrl="D:\Published" 
/p:LastUsedBuildConfiguration=Release 
/p:LastUsedPlatform="Any CPU" 
/p:LaunchSiteAfterPublish=True 
/p:ExcludeApp_Data=False 
/p:DeleteExistingFiles=True
asp.net asp.net-mvc msbuild visual-studio-2019 publish-profiles
1个回答
0
投票

我能够重现您的问题。

首先,根据[本文档](https://learn.microsoft.com/en-us/visualstudio/deployment/building-clickonce-applications-from-the-command-line?view=vs-2022#publish -process- 输出),PublishUrl 作为命令属性不能在 VS 2022 17.4 之前的命令中使用。

另外,虽然您提供的信息并不完全清楚,但我认为您正在使用 .net 框架 Web 应用程序,对吗?事实上,这个问题不仅出现在Web应用程序中,也出现在基于.net框架的项目中。 .net框架是一个非常古老的框架。如果要使用 PublishUrl 等属性,则需要将其基于 pubxml 等文件,否则传入的命令部分将无法识别。

对于 .net 框架,此命令将起作用:

msbuild /p:Configuration=发布 /p:DeployOnBuild=true /p:PublishProfile=xxx\FolderProfile.pubxml

但是这样的命令不起作用,该属性将无法被识别:

msbuild /p:Configuration=Release /p:DeployOnBuild=true /p:PublishUrl='C:\Published'

如果你尝试一下,你会发现.net core应用程序可以使用第二个命令

© www.soinside.com 2019 - 2024. All rights reserved.