在SSIS 2005的脚本任务中引用.net 3.5程序集?
我有这个工作使用了一个非常基本的例子(下面概述),我想看看其他SOers是否有经验做我正在尝试...在SSIS 2005中的脚本任务中使用3.5框架程序集。在SSIS 2005的脚本任务中引用.net 3.5程序集?
我基本上沿袭了页面发现here ......除了我的目标3.5框架,同时在Visual Studio 2008中
-
写/编译代码(目标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; } } }
- 给它一个强名称密钥
- 添加使用GACUTIL
- 复制装配到C装配到GAC:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727文件夹...开发
机运行Windows 7 - 创建一个脚本任务,并加入到该组件
-
参考在脚本任务
Dim x As New Extend() MsgBox(x.GetValue.ToString())
它的工作原理,当我运行SSIS项目的Cuz好,我得到一个消息框,文本
“通过命名定制库扩展脚本任务扩展”
所以...我的问题是将在SSIS项目/脚本任务仍然工作,当我尝试做更复杂的东西...特别是当我打电话给我(尚未被写入)使用LinqToEntities的程序集?
我似乎很奇怪我必须将文件复制到Framework 2.0文件夹并将其添加到GAC中......但也许这只是一个奇怪的SSIS要求......我知道我不能添加引用在脚本任务中,除非该程序集在Framework 2.0文件夹中...
哇,我知道这个答案迟到了。但我认为它不会产生任何问题,因为SSIS会在运行时从GAC加载程序集,只要在机器上具有.NET Framework 2.0和3.5,代码将在运行时运行。
框架2.0中的文件仅用于开发ide和预编译脚本任务/组件。在运行期间,所有重要的是如果版本存在于GAC中。
如果你没有预编译你的任务,那么你将需要两个地方的dll,framework 2.0文件夹和GAC,因为SSIS会先编译脚本任务(因此它需要在framework 2.0文件夹中引用),然后运行任务(引用将从GAC加载)。
为了安全起见,您可以尝试更改编译框架。
在C#
工程资源管理器>属性>目标框架下拉
How do I find the .NET framework version used in an SSIS 2008 R2 package?
在VB
菜单>项目>项目属性,
点击编译选项卡,然后单击高级编译选项a nd更改目标框架下拉菜单