Пространство имен 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;

Сделайте то же самое для других объектов, которые вы можете использовать из любого другого конфликтующего пространства имен.

Другие вопросы по тегам