我可以在 .NET 1.1 项目中使用在 VS2010 .NET 4.0 中创建的类库吗

Posted

技术标签:

【中文标题】我可以在 .NET 1.1 项目中使用在 VS2010 .NET 4.0 中创建的类库吗【英文标题】:Can I use a Class Library created in VS2010 .NET 4.0 in a .NET 1.1 project 【发布时间】:2013-02-22 15:22:26 【问题描述】:

我有一个使用 VS2003 Ver 7.1.6030 开发的 .NET 1.1 Web 应用程序,使用 VB.NET 作为代码隐藏;我最近在 VS2010 .NET 4.0 中创建了一个类库,以添加能够使用 System.Mail SmptClient 发送电子邮件,但是当我尝试添加对我的 .NET 1.1 项目的引用时,它给了我以下错误:

“无法添加对 libraryname.dll 的引用。这不是有效的程序集或 COM 组件。只能引用扩展名为“dll”的程序集和 COM 组件。请确保该文件是可访问的,并且它是一个有效的程序集或 COM 组件。”

我做错了什么?这可能吗?

非常感谢您的帮助!

大卫

【问题讨论】:

您的机器上有“libraryname.dll”文件吗? 是的,我从VS2010开发机复制到VS2003开发机,然后尝试添加为文件引用。 这不行,你只能在VS2003中使用.NET 1.x程序集。无法在 VS2010 中创建 .NET 1.x 程序集。是时候退休了 【参考方案1】:

您不能直接在 .net 1.1 项目中使用 .net 4 dll(您可以改为在 4 中使用 1.1)。 唯一的解决方案(除非您可以升级框架版本)是包装您的功能(即在 WCF 自托管服务中)并通过 Web 服务或其他 IPC 技术使用它。

【讨论】:

谢谢,它现在可以工作了,至少我以前使用的 .NET 1.1 电子邮件解决方案的服务,无论如何我必须将我的网络应用程序升级到最新的 .NET 框架,但它会是今年晚些时候。【参考方案2】:

尝试以下方法(不久前发现并记在笔记中):

// Load the assembly
Assembly a = Assembly.LoadFile(@"C:\PathHere\DLL.dll");

// Load the type and create an instance
Type t = a.GetType("ClassLibrary.ClassName");
object instance = a.CreateInstance("ClassLibrary.ClassName");

// Call the method
MethodInfo m = t.GetMethod("MethodName");
m.Invoke(instance, new object[] ); // Get the result here

这里有一个更详细的参数示例:Reflection: How to Invoke Method with parameters

【讨论】:

以上是关于我可以在 .NET 1.1 项目中使用在 VS2010 .NET 4.0 中创建的类库吗的主要内容,如果未能解决你的问题,请参考以下文章

如何在 VS2003 中给 .net 1.1 dll 起一个强名称

使用VS2008调试ASP.net网站项目 浏览器一直在连接中 无法打开

VS 2017,让您调试 ASP.NET C# 项目的发布版本

我可以在面向 .Net 3.5 的项目中使用所有 C# 4.0 功能吗?

.net - 未能创建应用程序域

ASP.Net Core:在VS2017中搭建React.js + webpack + babel