代码改变世界

让 SharePoint 支持 .NET 3.5

2009-01-13 00:19 by 晓风残月, ... 阅读, ... 评论, 收藏, 编辑

SharePoint 2007 是基于 .NET 2.0 开发,那 SharePoint 2007 支持 .NET 3.5 嘛? 答案是肯定的!任何 .NET 2.0 开发的程序包括都可以运行在 .NET 3.5 之上,可以充分利用 .NET 3.5 的新特性,包括 C# 3.5 的 LINQ,ASP.NET AJAX 等。

好吧,你说支持,那么我们就写一段 C#3.5 的代码吧:

1. 建一个 Document Library: BasicPages,Template 选择 Basic Page

2. 在 BasicPages 中New一新页面:NET35Test.aspx

3. 在 SharePoint Designer 打开

4. 贴入文末的代码

5. 按 F12 预览

6. 得到如下错误

Compiler Error Message: CS1526: A new expression requires () or [] after type

注意:如果你得到的是 Parser Error Message: Code blocks are not allowed in this file.,你可以先参考:
ERROR: Code blocks are not allowed in this file(此文件中不允许代码块) - SharePoint 2007 

到底支不支持啊?稍安勿躁,让我们往 web.config 添加如下配置节:

<configuration>
<system.codedom>
        
<compilers>
            
<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider,System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4">
                
<providerOption name="CompilerVersion" value="v3.5"/>
                
<providerOption name="WarnAsError" value="false"/>
            
</compiler>
        
</compilers>
    
</system.codedom>
</configuration>

 

 

重新刷新,得到如下错误,

Compiler Error Message: CS0234: The type or namespace name 'Linq' does not exist in the namespace 'System' (are you missing an assembly reference?)

Line 5: <%@ Import Namespace="System.Linq" %> 

LINQ 来了,看来有戏,继续往 web.config 添加如下配置节:

<configuration>
<system.web>
<compilation batch="false" debug="false">
      
<assemblies>
        
<add assembly="System.Core, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
      
</assemblies>
</compilation>
</system.web>
</configuration>

 

重新刷新,啊哈结果出来:


测试页面代码:

Code

 

总结,全部工作都在 web.config 中完成,有两个地方需要配置

一是,配置 system.codedom/compilers/complier,指示编译器版本

二是,配置 system.web/compilation/assemblies,添加额外的.NET3.5程序集引用

以上两个配置节只需要从已存在的 ASP.NET 3.5 应用程序的 web.config 拷贝过去。

对于 sharepoint 的 webconfig 包含很多其特有属性,直接编辑是一件让人敬畏的事,很容易出错,一不小心就翘辫子了。

update 2009年1月15日 1:28:37

明天再介绍一种“自动化”的方法以及支持ASP.NET AJAX 的测试。

如何自动化升级 SharePoint 的 web.config 到 .NET 3.5 ? 这里充分利用在 Vistual Studio 2008 中切换 .NET 版本的时候自动化更新 web.config 的特性:

1. 新建一个 WebApplication 或者 WebSite,Target Framework 选择 .NET framework 2.0
2. 拷贝欲升级的 SharePoint web.config 替换新建站点的 web.config
3. 打开项目属性,选择 Application 选项卡
4. 在 Application 选项卡中,Target Framework 选择 .NET framework 3.5
5. OK,VS 自动帮你更新 web.config 中 ASP.NET 3.5 相关配置节,包括 ASP.NET AJAX
6. 将升级的 web.config 覆盖旧的 SharePoint 站点下的 web.config (注意一定要养成习惯先备份,不能保证更新的web.config完全兼容)

update 2009年2月5日11:22:39

在 Windows SharePoint Services 3.0 版中安装 ASP.NET 2.0 AJAX Extensions 1.0