J'ai un projet SSIS que je peux exécuter tel quel, mais lorsque j'essaie de le modifier, j'obtiens une erreur:
Le nom 'zipfile' n'existe pas dans le contexte actuel
Sans édition, cela fonctionne bien.
Le code qui produit l'erreur:
public void Main()
{
// TODO: Add your code here
string moduleName = Dts.Variables["User::ModuleName"].Value.ToString();
string s = Dts.Variables["User::ZipFileLocation"].Value.ToString().TrimEnd('\\') + "\\" + moduleName + "\\" + moduleName + "_" + DateTime.Now.ToString("ddMMyyyy");
// TODO: Add your code here
string startPath = s;
string zipPath = s + ".Zip";
try
{
File.Delete(zipPath);
ZipFile.CreateFromDirectory(startPath, zipPath);
}
catch (Exception e)
{
}
Dts.TaskResult = (int)ScriptResults.Success;
}
Comment puis-je résoudre ça?
Assurez-vous que vous utilisez .NET version 4.5. Référencez la compression DLL - voici le chemin:
C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5\System.IO.Compression.FileSystem.dll
Référencez-le dans la classe en ajoutant using System.IO.Compression.FileSystem
. Si la classe est héritée d'une autre classe, assurez-vous de la référencer également dans la classe parente. (C'est ce que je dois faire pour le faire compiler)
Pour utiliser la classe ZipFile
, vous devez ajouter une référence à l’assemblage System.IO.Compression.FileSystem
dans votre projet. sinon, vous obtiendrez le message d'erreur suivant lors de la compilation:
Le nom 'ZipFile' n'existe pas dans le contexte actuel.
Pour plus d'informations sur l'ajout d'une référence à votre projet dans Visual Studio, voir Procédure: ajouter ou supprimer des références à l'aide de Reference Manager .
J'ai trouvé que la classe ZipFile
ne coopérerait pas uniquement à l'aide de System.IO.Compression
, elle a demandé à voir un Référence à System.IO.Compression.FileSystem
.
Si vous utilisez Visual Basic, l'ajout d'une référence est assez facile. Dans l'explorateur de solutions, l'un des onglets du projet s'appelle Références . Faites un clic droit dessus et sélectionnez Ajouter une référence . Faites défiler un peu et cochez la case à côté de System.IO.Compression.FileSystem
. Une fois que vous avez cliqué surOK, vous ne devriez même pas avoir besoin de référencer explicitement System.IO.Compression.FileSystem
dans votre code!
Bonne chance (: