2012-07-13 40 views
2

J'essaie de réparer cette application héritée qui a été créée en utilisant Visual Studio 2003, en utilisant Microsoft Office Interops version 11, .NET 2.0. J'essaie de le corriger dans Visual Studio Express 2010 pour faire référence à Interops version 14, .NET 4.0 - comme indiqué dans ma précédente question sur StackOverflow, l'application héritée fonctionne très bien dans Windows 7 mais après la fermeture, les produits Microsoft Office sont s'écraser quand j'essaie de les utiliser.Espace de noms Microsoft.Office.Interop.Word remplaçant mon espace de noms System? C# ASP.net

Cependant, quand je fixe les références dans VS2010 (supprimer les anciens INTEROPS V.11, ajouter de nouvelles INTEROPS de V.14) et ensuite tenter de publier l'application, je reçois des erreurs comme

'Microsoft.Office.Interop.Word.System does not contain a definition for IO' 

Il semble comme VS2010 ne voit pas mon espace de noms système utilisé lorsque l'espace de noms Word est référencé? Lorsque j'ai enlevé le

using Microsoft.Office.Interop.Word 
espace de noms

et essaie ensuite de publier, les erreurs comme celle-ci disparaissent et je reçois que les erreurs attendues liées à la référence mot manquant comme

The type or namespace name '_Document' could not be found (are you missing a using directive or an assembly reference?) 

je l'ai déjà inclus le système .dll dans la référence, donc je ne suis pas sûr de ce qui se passe? Merci d'avoir lu!

EDIT: J'ai rendu les "types d'interopérabilité incorporés" comme étant faux pour Office Interops. Cela peut avoir corrigé certaines des erreurs? CEPENDANT: Visual Studio interprète toujours les références système comme étant "Microsoft.Office.Interop.Word.System", ce qui n'est PAS ce que je veux. Cette erreur semble être le dominant maintenant:

The type name 'Windows' does not exist in the type 'Microsoft.Office.Interop.Word.System' 

Répondre

5

Ce problème se produit pour moi, que quand je mets les choses en utilisant après la définition de l'espace de noms comme ceci:

namespace Addin 
{ 
using Microsoft.Office.Core; 
using Microsoft.Office.Interop.Word; 
using Microsoft.Win32; 
using System; 
using System.ComponentModel; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.IO; 
using System.Net; 
using System.Reflection; 
using System.Runtime.CompilerServices; 
using System.Runtime.InteropServices; 
using System.Windows.Forms; 
.......................... 

Et la bonne voie est la suivante:

using Microsoft.Office.Core; 
using Microsoft.Office.Interop.Word; 
using Microsoft.Win32; 
using System; 
using System.ComponentModel; 
using System.Drawing; 
using System.Drawing.Imaging; 
using System.IO; 
using System.Net; 
using System.Reflection; 
using System.Runtime.CompilerServices; 
using System.Runtime.InteropServices; 
using System.Windows.Forms; 

namespace Addin 
{ 
.................... 

Cela peut vous aider!

0

Pour résoudre le problème dans vos espaces de noms:

changement:

using Microsoft.Office.Interop.Word; 

à:

using Document = Microsoft.Office.Interop.Word.Document; 

Faites la même chose pour d'autres objets que vous utilisez peut-être de tout autre espace de noms contradictoires.