我们有许多使用.NET 2.0或.NET 3.5编译的程序集。
有没有办法,通过未记录的表,函数等 - 可以查询数据库中的程序集列表并获取程序集的.NET版本?
我们查询了sys.assemblies
,其中包含各种程序集信息,但不包含目标框架版本。
我们正在将我们的08R2实例升级到Windows Server 2012,并且需要了解哪些程序集当前面向.NET 2.0框架,而不是3.5框架,因此我们可以针对重新编译它们(或替换,因为我们有许多程序集来自NuGet包,目前尚不清楚它们是否以.NET 3.5为目标。)
答案 0 :(得分:1)
不,没有获取此信息的机制(至少不是我见过或听说过的)。如果此信息可通过Reflection获得,那么您可以创建一个SQLCLR存储过程或函数来读取content
的{{1}}列,并尝试从那里提取它。
但是,您可能不需要此信息。如果唯一的原因是确定从SQL Server 2008 R2过渡到SQL Server 2012时可能需要重新编译的内容,那么:
sys.assembly_files
更改为false
像那样)。答案 1 :(得分:0)
您可以查看输出:
select * from sys.dm_clr_properties
你应该得到类似的东西:
name value
-----------------------------------
directory C:\Windows\Microsoft.NET\Framework64\v4.0.30319\
version v4.0.30319
state CLR is initialized