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

Visual Studio 2017.net核心自包含部署-发布目录和win-x64目录之间的差异

  •  0
  • greyseal96  · 技术社区  · 5 年前

    我已经在Windows 10上安装了Visual Studio 2017 15.8.7和.NET Core SDK v2.1.403。我正在尝试为dotnet核心控制台应用程序创建一个自包含的部署。当visualstudio发布应用程序时,它正在创建一个发布目录和一个win-x64目录,我不确定哪个目录是用于部署控制台应用程序的正确目录。

    我在跟踪 dotnet core app deployment documentation

    <?xml version="1.0" encoding="utf-8"?>
    <!--
    https://go.microsoft.com/fwlink/?LinkID=208121. 
    -->
    <Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
      <PropertyGroup>
        <PublishProtocol>FileSystem</PublishProtocol>
        <Configuration>Debug</Configuration>
        <Platform>Any CPU</Platform>
        <TargetFramework>netcoreapp2.1</TargetFramework>
        <PublishDir>bin\Debug\netcoreapp2.1\publish\</PublishDir>
        <RuntimeIdentifier>win-x64</RuntimeIdentifier>
        <SelfContained>true</SelfContained>
        <_IsPortable>false</_IsPortable>
      </PropertyGroup>
    </Project>
    

    文档中说输出将放在 PublishDir 我已经准备好了 bin\Debug\netcoreapp2.1\publish\ . 当我发布应用程序时,我看到 bin\Debug\netcoreapp2.1 -发布目录和win-x64目录。win-x64目录中的项远远少于publish目录;只有项目输出、应用程序的.exe文件和以下文件: hostfxr.dll , hostpolicy.dll ,和 <myappname>.deps.json . publish目录包含所有这些文件以及更多的dll;这正是我期望的自包含部署。

    这两个目录有什么区别?

    配置文件名称 包含启动应用程序所需的完整文件集(包括应用程序文件和所有.NET核心文件)。

    0 回复  |  直到 5 年前
        1
  •  0
  •   Sal    5 年前

    如果你想 自给自足的 部署时,需要使用发布目录的内容。win-x64文件夹是publish目录的一个子集,其中包含非.Net核心运行时文件(主要是与代码相关的文件)。

    自给自足的 部署是控制应用程序的.net核心运行时,而不是依赖目标计算机上的运行时。如果您选择win-x64 runtime并使selfcontained=false,您将看到no 可执行文件