【问题标题】:Get .NET Core DLL version on Linux在 Linux 上获取 .NET Core DLL 版本
【发布时间】:2018-07-12 07:16:17
【问题描述】:

我有一个 .NET Core 应用程序,它在构建期间使用 .csproj 中的标准选项设置元数据属性:

<Project>

  <PropertyGroup>

    <Product>MyCoolProduct</Product> 
    <Version>0.1.1</Version>

  </PropertyGroup>

  <snip />

</Project>

在 Windows 上,这很容易在资源管理器中或通过 PowerShell 脚本从已编译的 .dll 中检索。我怎样才能在 Linux 上做类似的事情?理想情况下,我希望能够运行像 dotnet inspect my.dll 这样的简单命令并获得该程序集的元数据摘要,但下一个最好的事情是什么?

【问题讨论】:

    标签: linux .net-core


    【解决方案1】:

    我用exiftool

    $ exiftool /usr/lib64/dotnet/sdk/2.0.3/Microsoft/Microsoft.NET.Build.Extensions/tools/netcoreapp1.0/System.Threading.dll | grep -i version
    ExifTool Version Number         : 10.55
    Linker Version                  : 48.0
    OS Version                      : 4.0
    Image Version                   : 0.0
    Subsystem Version               : 4.0
    File Version Number             : 4.6.24705.1
    Product Version Number          : 0.0.0.0
    File Version                    : 4.6.24705.01
    Product Version                 : 4.6.24705.01. Commit Hash: 4d1af962ca0fede10beb01d197367c2f90e92c97
    Assembly Version                : 4.0.12.0
    

    最初发现于here

    不过要小心。它不适用于crossgened 的东西:

    $ exiftool /usr/lib64/dotnet/sdk/2.0.3/Roslyn/Microsoft.CodeAnalysis.dll
    ExifTool Version Number         : 10.55
    File Name                       : Microsoft.CodeAnalysis.dll
    Directory                       : /usr/lib64/dotnet/sdk/2.0.3/Roslyn
    File Size                       : 4.6 MB
    File Modification Date/Time     : 2018:01:24 13:12:48-05:00
    File Access Date/Time           : 2018:02:01 12:37:59-05:00
    File Inode Change Date/Time     : 2018:01:26 09:52:23-05:00
    File Permissions                : rw-r--r--
    Error                           : File format error
    

    【讨论】:

    • 您能否详细说明crossgen 的问题?当我手动构建 (dotnet build) 时,我看到了这项工作,但是当 .dll 由 dockerfile 构建时失败,猜测它与此有关吗?
    • 我对此表示怀疑。 crossgen 用于构建 .NET Core 本身包含的 dll。您也可以使用它,但它是构建过程中的手动步骤。 docker 不应该创建交叉生成的东西。但是the mono linker does。哦,更详细地说,Windows 也不会显示这些交叉生成文件的版本。如果 Windows 资源管理器可以显示 dll 的版本,exiftool 也应该。
    • 谢谢!我以前没听说过exiftool,但它似乎很有用,虽然这也是为什么你不应该给你的应用命名太具体的一个例子:)
    猜你喜欢
    • 1970-01-01
    • 2011-08-26
    • 2021-09-28
    • 2020-07-29
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    相关资源
    最近更新 更多