【问题标题】:Setup exe file version when publishing with dotnet使用 dotnet 发布时设置 exe 文件版本
【发布时间】:2017-04-20 10:15:08
【问题描述】:

我有一个net core consoleapp项目,如下(VS 2017风格):

<Project Sdk="Microsoft.NET.Sdk">

  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp1.1</TargetFramework>
    <Version>2.0.0</Version>
    <AssemblyVersion>3.0.0.0</AssemblyVersion>
    <FileVersion>4.0.0.0</FileVersion>
    <RuntimeIdentifiers>win10-x64</RuntimeIdentifiers>
    <RuntimeFrameworkVersion>1.0.4</RuntimeFrameworkVersion>
  </PropertyGroup>
</Project>

我可以毫无问题地构建项目,我可以使用 dotnet publish -r win10-x64 发布它,它将与 dll 文件一起生成一个 exe 文件。我的问题是 exe 文件有一些奇怪的 FileVersion 和 ProductVersion 字段(在我的情况下 FileVersion = 1.0.1.4500 和 ProductVersion 1.0.1.cee57 ...(一些 guid))。此外,其余文件详细信息(名称、版权)与 dotnet 相关,而不是我自己的项目。

有什么方法可以在发布时控制 exe 的详细信息吗?

【问题讨论】:

    标签: c# .net .net-core visual-studio-2017


    【解决方案1】:

    不,您的项目的主要构建输出仍然是 .dll 文件,.exe(或 linux、mac 可执行文件)文件是复制并重命名的 dotnet.exe(或者在即将发布的 2.0 版本的情况下,@987654324 @ 带有要运行的 dll 名称嵌入)。

    exe 文件只是启动运行时然后加载您的 dll 的帮助程序。不过发布后可以尝试使用editbin.exe(VS C++ Tools)等二进制编辑工具对文件进行修改。

    【讨论】:

    • 仅供参考,exe 文件只是从这个 NuGet 包中提取出来的:nuget.org/packages/… 这允许构建在 linux 或 Mac 机器上运行在 Windows 上的独立 .net 核心应用程序
    【解决方案2】:

    Dotnet core 3.0 添加了在发布期间对 shim exe 进行版本控制的功能,就像 OP 所期望的那样。它现在应该可以开箱即用了。但是,如果在基于 Nanoserver 的 docker 环境中运行构建,则该功能不起作用。

    警告 NETSDK1074:应用程序主机可执行文件不会 自定义,因为添加资源需要构建 在 Windows 上执行(不包括 Nano Server)

    【讨论】:

      猜你喜欢
      • 2021-11-05
      • 2011-12-09
      • 2020-10-28
      • 2019-11-10
      • 2010-09-15
      • 2023-03-15
      • 1970-01-01
      • 1970-01-01
      • 2022-01-18
      相关资源
      最近更新 更多