我已经完成的先决条件:
通过模板“ ASP.NET Core Web应用程序”(选择ASP.NET NetCore 2.1)创建了简单的Web API项目。使用下一个配置创建了一个发布配置文件
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<WebPublishMethod>Package</WebPublishMethod>
<PublishProvider>FileSystem</PublishProvider>
<LastUsedBuildConfiguration>Release</LastUsedBuildConfiguration>
<LastUsedPlatform>Any CPU</LastUsedPlatform>
<SiteUrlToLaunchAfterPublish />
<LaunchSiteAfterPublish>True</LaunchSiteAfterPublish>
<ExcludeApp_Data>False</ExcludeApp_Data>
<ProjectGuid>ca211ccb-1868-47d8-a6nd-c30347faa49e</ProjectGuid>
<DeleteExistingFiles>False</DeleteExistingFiles>
<PackageLocation>C:\Test\Publish\CoreWebApi.zip</PackageLocation>
<DeployIisAppPath>Default Web Site/WebEngine555</DeployIisAppPath>
</PropertyGroup>
</Project>
可帮助生成一个zip包。
将此程序包部署到IIS之后,(我已经用下一条命令完成了此操作)
C:\Program Files (x86)\IIS\Microsoft Web Deploy V3>msdeploy.exe -verb:sync -source:package="C:\Test\Publish\CoreWebApi.zip" -dest:auto="C:\inetpub\wwwroot\WebEngine"
它将软件包安装到“ C:\ inetpub \ wwwroot”根目录(默认网站,并从中删除所有其他内容)。
是否可以通过.pubxml文件在MSBuild配置步骤中将安装路径(虚拟路径)指向根文件夹而不是至少指向子文件夹?我可以通过运行
来做到这一点C:\Program Files (x86)\IIS\Microsoft Web Deploy V3>msdeploy.exe -verb:sync -source:package="C:\Test\Publish\CoreWebApi.zip"
-dest:auto="Default Web Site/WebEngine"
-setParam:name="IIS Web Application Name",
value="Default Web Site/WebEngine5"
也在这里Msdeploy replace attribute 找到一个很好的答案,但它仅适用于简单的新Web API。当我尝试对现有项目执行相同操作时,它始终使用“ .. \ obj \ Release \ netcoreapp2.1 \ PubTmp \ Out \”文件夹作为同步目标,而根本不将文件复制到IIS文件夹。而且具有上述参数,只是不能复制任何内容
甚至包含.pubxml文件中的参数:
默认网站/ MeWebApp 默认网站/ MeWebApp C:\ inetpub \ wwwroot \ Test2 C:\ inetpub \ wwwroot \ Test1
应该影响什么的参数是什么?在新的管道中似乎忽略了一些targets。我做了很多实验,就我而言,最有用的链接是blog,sdk,official,但是仍然找不到在部署时选择发布文件夹的方法。