在Linux上获取.NET Core DLL版本

18

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

<Project>

  <PropertyGroup>

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

  </PropertyGroup>

  <snip />

</Project>

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

2个回答

19

我使用 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

这个信息最初来源于这里

注意,它不能用于crossgen编译的文件:

$ 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)时看到它可以工作,但是当.dllsdockerfile构建时失败了,猜测这可能与此有关? - superstator
1
我有所怀疑。crossgen 用于构建与 .NET Core 一起提供的 dlls。你也可以使用它,但这是构建过程中的手动步骤。docker 不应该创建 crossgen'ed 的东西。但是 mono 链接器会这样做。哦,还有要详细说明的是,Windows 也不会显示那些经过 crossgen 处理的文件的版本。如果 Windows 资源管理器可以显示 dll 的版本,那么 exiftool 也应该可以。 - omajid
谢谢!我之前没听说过 exiftool,但它似乎非常有用,尽管也是为什么你不应该给你的应用程序太具体的名称的一个例子 :) - Tobias J

2

在 pod 中查找程序版本的方法 cat /usr/lib64/dotnet/sdk/2.0.3/Microsoft/Microsoft.NET.Build.Extensions/tools/netcoreapp1.0/System.Threading.deps.json | grep System.Threading

如果 deps.json 文件可用,仅供参考


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接