2010-01-14 91 views
2

我有这个工作使用了一个非常基本的例子(下面概述),我想看看其他SOers是否有经验做我正在尝试...在SSIS 2005中的脚本任务中使用3.5框架程序集。在SSIS 2005的脚本任务中引用.net 3.5程序集?

我基本上沿袭了页面发现here ......除了我的目标3.5框架,同时在Visual Studio 2008中

  1. 写/编译代码(目标3.5框架),只是一些简单的LINQ以便我使用大于2.0的框架功能

    using System; 
    using System.Collections.Generic; 
    using System.Text; 
    using System.Linq;  
    
    namespace Ext 
    { 
        public class Extend 
        { 
         public string GetValue() 
         { 
          /* 
          Test Linq to "prove" that we're not running against the 
          2.0 framework. 
          I know this code could be improved, but bear with me... 
          it's throwaway code just to test the concept 
          */ 
          string [] teststring = new string [3]; 
          teststring[0] = "named Extend"; 
          string returnString = String.Empty; 
          var s = teststring.Where(x => x.ToString() == "named Extend"); 
          foreach (var x in s) 
          { 
          returnString = x.ToString(); 
          } 
          return "Extending Script Task through a custom library " + returnString; 
         } 
        } 
    } 
    
  2. 给它一个强名称密钥
  3. 添加使用GACUTIL
  4. 复制装配到C装配到GAC:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727文件夹...开发
    机运行Windows 7
  5. 创建一个脚本任务,并加入到该组件
  6. 参考在脚本任务

    Dim x As New Extend() 
    MsgBox(x.GetValue.ToString()) 
    

它的工作原理,当我运行SSIS项目的Cuz好,我得到一个消息框,文本
“通过命名定制库扩展脚本任务扩展”

所以...我的问题是将在SSIS项目/脚本任务仍然工作,当我尝试做更复杂的东西...特别是当我打电话给我(尚未被写入)使用LinqToEntities的程序集?

我似乎很奇怪我必须将文件复制到Framework 2.0文件夹并将其添加到GAC中......但也许这只是一个奇怪的SSIS要求......我知道我不能添加引用在脚本任务中,除非该程序集在Framework 2.0文件夹中...

回答

3

哇,我知道这个答案迟到了。但我认为它不会产生任何问题,因为SSIS会在运行时从GAC加载程序集,只要在机器上具有.NET Framework 2.0和3.5,代码将在运行时运行。

框架2.0中的文件仅用于开发ide和预编译脚本任务/组件。在运行期间,所有重要的是如果版本存在于GAC中。

如果你没有预编译你的任务,那么你将需要两个地方的dll,framework 2.0文件夹和GAC,因为SSIS会先编译脚本任务(因此它需要在framework 2.0文件夹中引用),然后运行任务(引用将从GAC加载)。