今天上传公司服务器出现的.net framework版本错误问题
今天做好一个网站(.net4.0),里面有静态页面也有aspx页面,发布后,满心欢喜的上传到服务器,运行后,静态页没有问题,可是通过导航栏一旦点击进入aspx页面,就会出现错误
,提示web.config的target framework为4.0,改成2.0后页面其他地方报错,于是想到生成和发布应该选择2.0,于是回到.net 2010 里,在属性页里的生成选项,选择2.0(下面参考别人文章2.0版本也能用4.0的东西)
生成提示很多错误,最多的是不支持linq命名空间,只能暂时忍了删了(以后再开发时要看好服务器的应用程序池是否只支持到2.0版本),生成成功后发布部署后,运行成功,从网上查了查,2.0框架也能用3.5的特性
这是参考别人的文章:
在.net framework 2.0 环境下开发 .net framework 3.5 的程序
一、案例分析:
由于客户端部署及安装时,只想安装.net framework 2.0的框架,而你的项目需要使用.net framework 3.5的一些特性,如linq,扩展方法之类的。如果安装传统的话, 你需要创建一个.net framework 3.5的项目才能使用这些特性,而我需要我们的客户端使用的朋友们的机器上只安装2.0的框架。本文告诉你如何在.net framework 2.0的环境下开发3.5的程序。
二、如何做:
1. 创建一个.net framework 2.0的winform项目,如图所示:
2. 接着添加引用,浏览到C:\Program Files\Reference Assemblies\Microsoft\Framework\v3.5下面的目录,可以发现目录中包含很多3.5的dll文件:
如果你要使用linq特性,你可以选择System.Core.dll这个文件,并且将会有以下提示:
直接跳过,选Yes,再看我们的解决方案项目视图:
可以发现,System.Core打了一个黄色的感叹号,说明还没有引用成功。
3. 接下来,选择引用中的 System.Core ,右键选择“属性”,可以看到:
然后请把Specific Version设置成False,Copy Local设置成True,可以发现,原先的黄色的感叹号不见了,说明引用成功。
现在你就可以开始使用linq之类的特性了。
代码如下:
![](https://images.cnblogs.com/OutliningIndicators/ExpandedBlockStart.gif)
private void button1_Click(object sender, EventArgs e) { //初始化随机数组 int[] array = new int[8] { 5, 1, 1, 3, 2, 4, 4, 3 };
//过滤重复的并且升序排序 array = array.Distinct().OrderBy(o => o).ToArray();
MessageBox.Show(array.JoinWith(",")); } }
//扩展方法静态类 public static class ArrayExtension { //数组连接成字符串方法 public static string JoinWith(this IEnumerable arr, string separate) { StringBuilder result = new StringBuilder(); foreach (object i in arr) result.Append(i).Append(separate); return result.ToString().TrimEnd(separate.ToCharArray()); } }
4. 最后编辑成功,运行如下:
OK,大功告成了 :)