.net - 如何判断 new-object 来自哪个版本的程序集?

标签 .net powershell .net-assembly

在 PowerShell 中,我使用以下代码加载两个程序集

#sql server 2012 assembly
add-type -assembly "microsoft.sqlserver.smo, version=11.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91";
#sql server 2017 assembly
add-type -assembly "microsoft.sqlserver.smo, version=14.0.0.0, culture=neutral, publickeytoken=89845dcd8080cc91";

我可以看到两个程序集都已成功加载

[AppDomain]::CurrentDomain.GetAssemblies() | where location -like "C:\WINDOWS\assembly\GAC_MSIL\microsoft.sqlserver.smo*"

enter image description here

现在如果我有以下代码

$svr = new-object "microsoft.sqlserver.management.smo.server" 'localhost';

$svr 来自 SQL Server 2012 程序集(版本 11.0.0.0)还是来自 SQL Server 2017 程序集(版本 14.0.0.0)?

最佳答案

将从您加载的第一个程序集加载该类型。要查看类型的程序集,您可以使用以下代码:

$svr.GetType().Assembly.FullName

如果您想查看差异,可以在新的 PowerShell session 中测试不同的顺序。

关于.net - 如何判断 new-object 来自哪个版本的程序集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47707197/

相关文章:

c# - 单程序集多语言 Windows 窗体部署(ILMerge 和附属程序集/本地化) - 可能吗?

.net - 是否可以使用 SqlException.LineNumber 来识别异常是否与连接相关?

json - CURL CouchDB 复制命令 - 无效的 JSON

.net - 如何查看GAC中的文件夹和文件?

c# - 我如何知道哪个程序集包含给定的命名空间? - C#

c# - 合并/标记 SQL 命令的方法

.net - 如何将位图存储在.NET的内存中?

azure - 无法在 PowerShell 7.3.x 中安装 `Az` 模块

powershell - 在powershell中对空字符串应用拆分后,相等运算符不产生True/False输出的原因是什么?

c# - .Net 命名空间可以跨越多个程序集吗?