2010-01-14 5 views
2

J'ai ceci pour travailler en utilisant un exemple très basique (décrit ci-dessous) et je veux voir si d'autres SO ont l'expérience de faire ce que j'essaye ... en utilisant un assembly de framework 3.5 dans une tâche de script dans SSIS 2005.Référence un assembly .net 3.5 dans une tâche de script dans SSIS 2005?

J'ai essentiellement suivi la page trouvée here ... sauf que je ciblé le cadre 3,5 alors que dans Visual studio 2008.

  1. Ecrire/compiler votre code (ciblé le cadre 3.5) Juste quelques Linq simples de sorte que j'utilise une fonctionnalité de cadre supérieure à 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. lui a donné un nom fort clé
  3. Ajouté l'ensemble au GAC en utilisant gacutil
  4. Copié l'ensemble à la C: \ Windows \ Microsoft.NET \ Framework \ v2.0.50727 dossier ... dev
    Machine exécute Windows 7
  5. créé une tâche de script et a ajouté une référence à l'ensemble
  6. Dans la tâche de script

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

Il fonctionne bien cuz quand je lance le projet SSIS je reviens une boîte de message avec le texte
« L'extension de tâche de script dans une bibliothèque personnalisée nommée Extend »

Alors ... ma question est ce que le projet SSIS/La tâche de script fonctionne quand j'essaie de faire des choses plus sophistiquées ... surtout quand j'appelle mon assembly (qui doit encore être écrit) qui utilise LinqToEntities?

Il me semble étrange que je doive copier le fichier dans le dossier Framework 2.0 et l'ajouter au GAC ... mais c'est peut-être juste une exigence étrange de SSIS ... Je sais que je ne peux pas ajouter la référence dans la tâche de script, sauf si cet assemblage se trouve dans le dossier Framework 2.0 ...

Répondre

3

wow, je sais que cette réponse arrive tard. mais je pense qu'il ne crée aucun problème car SSIS charge l'assembly à l'exécution à partir de GAC, aussi longtemps que vous avez .net framework 2.0 et 3.5 sur la machine, le code fonctionnera à l'exécution.

Le fichier dans la structure 2.0 est uniquement utilisé pour l'ID de développement et pour précompiler la tâche/le composant de script. pendant l'exécution, tout ce qui compte est si la version existe dans GAC. Si vous n'avez pas précompilé vos tâches, vous aurez besoin de la DLL à deux endroits, le dossier framework 2.0 AND GAC, car SSIS compilera d'abord la tâche de script (il a donc besoin de la référence dans le dossier framework 2.0), puis exécutez la tâche (la référence sera chargée depuis GAC).

2

Pour être sûr, vous pouvez essayer de changer la structure de compilation.

En C#

Explorateur de projets> Propriétés> menu déroulant Framework cible

How do I find the .NET framework version used in an SSIS 2008 R2 package?

En VB

Menu> Projet> Propriétés du projet,
cliquez sur le Compile onglet, puis cliquez sur les options de compilation avancées a nd Modifier la liste déroulante Target Framework

http://www.demiliani.com/blog/archive/2007/08/24/6430.aspx

Questions connexes