3

Microsoft Office Interops バージョン 11、.NET 2.0 を使用して、Visual Studio 2003 を使用して作成されたこのレガシ アプリを修正しようとしています。Interops バージョン 14、.NET 4.0 を参照するように Visual Studio Express 2010 で修正しようとしています。以前の StackOverflow に関する質問で述べたように、レガシー アプリは Windows 7 で正常に動作しますが、閉じた後、Microsoft Office 製品はそれらを使用しようとするとクラッシュします。

ただし、VS2010 で参照を修正し (古い v.11 Interops を削除し、新しい v.14 Interops を追加)、アプリケーションを公開しようとすると、次のようなエラーが発生します。

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

Word 名前空間が参照されている場合、VS2010 ではシステム名前空間が使用されていないように見えますか? を取り外したところ

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 は既に参照に含めているので、何が起こっているのかわかりません。読んでくれてありがとう!

編集:「埋め込み相互運用タイプ」を Office 相互運用の False にしました。それはいくつかのエラーを修正したかもしれませんか?ただし、Visual Studio はまだシステム参照を「Microsoft.Office.Interop.Word.System」と解釈していますが、これは私が望んでいるものではありません。このエラーは現在支配的なもののようです:

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

2 に答える 2

6

この問題は、次のように名前空間定義の後に 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
{
....................

お役に立てますように!

于 2012-09-05T01:27:50.183 に答える
0

名前空間の問題を修正するには:

変化する:

using Microsoft.Office.Interop.Word;

に:

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

他の競合する名前空間から使用している可能性のある他のオブジェクトについても同じことを行います。

于 2013-06-06T02:34:12.003 に答える