Пространство имен Microsoft.Office.Interop.Word переопределяет мое пространство имен System? C# ASP.net
Я пытаюсь исправить это устаревшее приложение, созданное с использованием Visual Studio 2003, с использованием Microsoft Office Interops версии 11, .NET 2.0. Я пытаюсь исправить это в Visual Studio Express 2010 для ссылки на Interops версии 14, .NET 4.0 - как отмечалось в моем предыдущем вопросе о Stackru, унаследованное приложение отлично работает в Windows 7, но после его закрытия продукты Microsoft Office сбой, когда я пытаюсь их использовать.
Однако, когда я исправляю ссылки в VS2010 (удаляю старые Interops v.11, добавляю новые Interops v.14) и затем пытаюсь опубликовать приложение, я получаю такие ошибки, как
'Microsoft.Office.Interop.Word.System does not contain a definition for IO'
Похоже, что VS2010 не видит моего пространства имен System, используемого при обращении к пространству имен Word? Когда я удалил
using Microsoft.Office.Interop.Word
пространство имен, а затем попытаться опубликовать, ошибки, как указано выше, исчезают, и я получаю только ожидаемые ошибки, связанные с отсутствующей ссылкой Word, как
The type or namespace name '_Document' could not be found (are you missing a using directive or an assembly reference?)
Я уже включил System.dll в ссылку, так что я не уверен, что происходит? Спасибо за прочтение!
РЕДАКТИРОВАТЬ: я сделал "Внедренные типы взаимодействия", чтобы быть ложным для офисных взаимодействий. Это могло исправить некоторые ошибки? ОДНАКО: Visual Studio по-прежнему интерпретирует любые ссылки на Систему как "Microsoft.Office.Interop.Word.System", что НЕ то, что я хочу. Эта ошибка сейчас кажется доминирующей:
The type name 'Windows' does not exist in the type 'Microsoft.Office.Interop.Word.System'
2 ответа
Эта проблема возникает у меня, только когда я помещаю материал using после определения пространства имен следующим образом:
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;
..........................
И правильный путь это:
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
{
....................
Пусть это поможет вам!
Чтобы исправить проблему в ваших пространствах имен:
менять:
using Microsoft.Office.Interop.Word;
чтобы:
using Document = Microsoft.Office.Interop.Word.Document;
Сделайте то же самое для других объектов, которые вы можете использовать из любого другого конфликтующего пространства имен.