如何使用远程主机的 dotnet 发布执行依赖于框架的部署



我们有一个持续的构建正在进行中,并正在尝试将dotnet core应用程序发布为Windows服务。我们可以使用具有以下发布配置文件的可视化工作室来执行此操作

<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>
<TargetFramework>netcoreapp2.1</TargetFramework>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<ProjectGuid>d655df5a-9266-470d-becd-6d62c919e961</ProjectGuid>
<SelfContained>false</SelfContained>
<_IsPortable>true</_IsPortable>
<publishUrl>C:publishwebapi</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>

起初,我们尝试了阻力最小的路径,并试图调用dotnet publish project /p:PublishProfile=<FolderProfileName>

此命令忽略了发布配置文件设置,因此我们回退到手动设置属性。但是,这只会构建一个带有exe但所有网络核心dll的独立应用程序,或者一个仅具有dll的依赖于框架的应用程序。

命令已执行

dotnet publish Project.csproj -c "Release" -o "C:PublishApp" -r "win-x64" --self-contained false

问题是,自从我遇到了上面指定的问题以来,我如何使用发布配置文件模拟净核心应用程序的VS2017发布。

目标输出是发布没有 aspnetcore dll 但具有远程主机可执行文件的网络核心应用。

发布配置文件旨在与构建一起使用,通过传递

-p:DeployOnBuild=true -p:PublishProfile=<ProfileName>

dotnet buildmsbuild.这与"经典"ASP.NET 项目相同。

如果只需要文件系统部署,则可以改用dotnet publish,它可以直接创建到目标位置的发布输出(Web 部署在内部使用相同的机制,方法是发布到临时位置,然后复制、压缩等(。

dotnet publish将在传递运行时标识符(-r选项(时自动创建独立部署。

如果还希望主机 exe 启动运行时,还可以使用

dotnet publish -r win-x64 --self-contained false -p:UseAppHost=true

发出一个.exe文件,您可以将其用作 Windows 服务而不是pathtodotnet.exe pathtoapp.dll,该文件仍将使用计算机范围的 .NET Core 安装。这可能会也可能不会成为 3.0 中默认输出的一部分。

最新更新