2

2 台の異なるマシンで試し、ダウンロードを数回試みましたが、Productivity Power Tools 拡張機能を VS 2010 Premium (10.0.30139.1 RTMRel) にインストールしようとすると、「ファイルは有効な VSIX パッケージではありません」というエラーが表示されます。 ." 検索すると、この問題を経験したことがある人は他に 1 人か 2 人しかいないことがわかります。この問題を診断するにはどうすればよいですか?

編集:以下のアーロンの提案に応えて、次の結果でコードを実行しました:

at MS.Internal.IO.Zip.ZipIOLocalFileDataDescriptor.ParseRecord(BinaryReader reader, Int64 compressedSizeFromCentralDir, Int64 uncompressedSizeFromCentralDir, UInt32 crc32FromCentralDir, UInt16 versionNeededToExtract)
at MS.Internal.IO.Zip.ZipIOLocalFileBlock.ParseRecord(BinaryReader reader, String fileName, Int64 position, ZipIOCentralDirectoryBlock centralDir, ZipIOCentralDirectoryFileHeader centralDirFileHeader)
at MS.Internal.IO.Zip.ZipIOLocalFileBlock.SeekableLoad(ZipIOBlockManager blockManager, String fileName)
at MS.Internal.IO.Zip.ZipIOBlockManager.LoadLocalFileBlock(String zipFileName)
at MS.Internal.IO.Zip.ZipArchive.GetFile(String zipFileName)
at MS.Internal.IO.Zip.ZipArchive.GetFiles()
at System.IO.Packaging.ZipPackage.ContentTypeHelper..ctor(ZipArchive zipArchive, IgnoredItemHelper ignoredItemHelper)
at System.IO.Packaging.ZipPackage..ctor(Stream s, FileMode mode, FileAccess access, Boolean streaming)
at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess, Boolean streaming)
at System.IO.Packaging.Package.Open(Stream stream, FileMode packageMode, FileAccess packageAccess)
at VSIXReadTest.Program.Main(String[] args) in C:\\Development\\WebSockets\\PowerTools\\Program.cs:line 17

Packagingファイルを数回ダウンロードしましたが、いずれも同じ結果でした。ファイル システムまたはライブラリに何か異なるものがあるか、間違っている可能性があります。

4

2 に答える 2

4

私は、Visual Studio 2010 の VSIX/Extension Manager を作成したチームの開発者なので、おそらくここでお手伝いできます。VSIX ファイルは OPC コンテナーです (基本的に、いくつかの追加の制約がある zip ファイル)。ご想像のとおり、Managed OPC API を使用してファイル (つまり、.NET の System.IO.Packaging 名前空間) を開きます。このエラー メッセージは、ZipPackage.Open の呼び出しが失敗した場合にのみ表示されます。

お使いのマシンで次のコードを C# コンソール アプリケーション (.NET 4.0 を対象) にコンパイルして、結果を確認していただけますか? WindowsBase へのアセンブリ参照も追加する必要があります。ここにバグがある場合は、それについてもっと知りたいです!

namespace VSIXReadTest
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.IO;
    using System.IO.Packaging;

    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                const string PathToVsixFile = @"PutPathHere!!!";
                using (FileStream stream = new FileStream(PathToVsixFile, FileMode.Open, FileAccess.Read))
                {
                    Package vsixPackage = ZipPackage.Open(stream, FileMode.Open, FileAccess.Read);
                }
            }
            catch (Exception ex)
            {
                StringBuilder errorMessage = new StringBuilder();
                do
                {
                    errorMessage.Append(ex.GetType().Name);
                    errorMessage.Append(": ");
                    errorMessage.AppendLine(ex.Message);
                    errorMessage.AppendLine(ex.StackTrace);
                    ex = ex.InnerException;
                } while (ex != null);

                Console.WriteLine(errorMessage.ToString());
            }

            Console.WriteLine("Press a key to exit...");
            Console.Read();
        }
    }
}
于 2011-03-29T16:12:06.793 に答える
0

.VSIX ファイルは、実際には .ZIP ファイルの秘密です。名前を変更して、中身を確認してください。多分それは単に破損したダウンロードの問題ですか?私はこのリンクhttp://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef/を自分で試してみましたが、うまくいくようです。

于 2011-03-16T09:17:36.240 に答える