代码之家  ›  专栏  ›  技术社区  ›  Kaizer69

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

  •  1
  • Kaizer69  · 技术社区  · 6 年前

    我们有一个持续的建设正在进行,并试图发布一个dotnet核心应用程序作为windows服务。我们可以使用visualstudio和下面的发布配置文件来实现这一点

    <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>
    

    一开始,我们尝试了一条阻力最小的道路,试着打电话 dotnet publish project /p:PublishProfile=<FolderProfileName>

    执行的命令

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

    问题是,既然我遇到了上面指定的问题,那么如何使用发布配置文件模拟VS2017发布net core应用程序呢。

    目标输出将是发布不带aspnetcore dll但带有远程主机可执行文件的netcore应用程序。

    1 回复  |  直到 6 年前
        1
  •  5
  •   Martin Ullrich    6 年前

    发布概要文件将与构建一起使用,通过传递

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

    dotnet build msbuild . 这与“经典”ASP.NET项目相同。

    如果您只需要文件系统部署,那么可以使用 dotnet publish 相反,它可以直接创建到目标位置的发布输出(webdeploy在内部使用相同的机制,发布到临时位置,然后进行复制、压缩等)。

    将在传递运行时标识符时自动创建自包含的部署( -r 选项)。

    如果您还想让主机exe启动运行时,也可以使用

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

    path\to\dotnet.exe path\to\app.dll ,仍将使用计算机范围的.NET核心安装。这可能会也可能不会成为3.0默认输出的一部分。