我们正在进行持续构建,并尝试将 dotnet 核心应用程序发布为 Windows 服务。我们可以使用具有以下发布配置文件的 Visual Studio 执行此操作
<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:\publish\webapi</publishUrl>
<DeleteExistingFiles>True</DeleteExistingFiles>
</PropertyGroup>
</Project>
Run Code Online (Sandbox Code Playgroud)
起初我们尝试了阻力最小的路径并尝试调用
dotnet publish project /p:PublishProfile=<FolderProfileName>
此命令忽略了发布配置文件设置,因此我们退回到手动设置属性。然而,这只会构建一个带有 exe 但所有网络核心 dll 的自包含应用程序或仅包含 dll 的框架相关应用程序
命令已执行
dotnet publish Project.csproj -c "Release" -o "C:\Publish\App" -r "win-x64" --self-contained false
Run Code Online (Sandbox Code Playgroud)
问题是我如何使用发布配置文件模拟 VS2017 发布网络核心应用程序,因为我遇到了上面指定的问题。
目标输出将是发布没有 aspnetcore dll 但具有远程主机可执行文件的网络核心应用程序。