我可以从较低.Net版本的程序集动态调用更高.Net版本的程序集吗?也许我应该使用嵌入式DLR语言(Iron Python)?
答案 0 :(得分:2)
程序集没有.NET版本,它有一个元数据版本。忽略早期的,在野外有三个不同的。分别是.NET 1.1,.NET 2.0和.NET 4中出现的版本。中介版本,2.0和3.5 SP1之间的任何版本,都使用2.0版元数据格式。
或者换句话说,CLR版本才是真正重要的。这就是为什么@ Barfieldmv的代码可以工作,.NET 2.0和.NET 3.5使用相同的CLR版本。在今天更典型的问题上耗尽了气体,CLR版本2无法加载具有版本4元数据的程序集。您必须使用版本4 CLR运行程序。这需要一个app.exe.config文件来覆盖将要使用的CLR版本。它应该是这样的:
<configuration>
<startup>
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
答案 1 :(得分:1)
当然可以,这个问题应该会帮助你:
Loading .net 3.5 wpf-forms in a .net 2.0 application
或代码:
Dim dllPath As String = "C:\ProjectsTest\TestSolution\ActiveXUser\bin\Debug\TestControl.dll"
If Not File.Exists(dllPath) Then
Return
End If
Dim loadedAssembly As [Assembly] = [Assembly].LoadFile(dllPath)
Dim mytypes As Type() = loadedAssembly.GetTypes()
Dim t As Type = mytypes(1)
Dim obj As [Object] = Activator.CreateInstance(t)
TestControl.dll可以包含所有已安装的.net版本信息。