2

두 대의 다른 컴퓨터를 사용해 보았습니다. 다운로드를 여러 번 시도했지만 VS 2010 Premium (10.0.30139.1 RTMRel), "파일이 유효한 VSIX 패키지가 아닙니다."라는 오류 메시지가 나타납니다. 검색을 통해 한두 명의 다른 사람들 만이이 문제를 경험했습니다. 이 문제를 진단하려면 어떻게해야합니까?Visual Studio 2010 용 Productivity Power Tools를 설치하려고 할 때 오류가 발생했습니다.

편집 : 나는 같은 결과 파일을 여러 번 각을 다운로드 한

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

저는 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(); 
     } 
    } 
} 
+0

감사합니다 @ 애런. 이 코드는 * FileFormatException을 throw합니다. 파일에 손상된 데이터 *가 있습니다. 내 질문에 스택 추적을 추가했습니다. – ProfK

+0

손상된 다운로드가 없다는 것을 확인할 수 있습니까? ProPowerTools.vsix (버전 10.0.20318.14)의 최신 버전에는 cdd55a9d8ac33a69217c9d79a17690ac의 MD5 체크섬이 있음을 확인했습니다. Microsoft의 FCIV 도구를 사용하여 컴퓨터에서 체크섬을 얻을 수 있습니다. http://bit.ly/fCSWdy –

+0

OK, 해시가 다르기 때문에 .visx를 삭제하고 다시 다운로드 했으므로 해시는 이제 동일하게 작동합니다. 이전에 파일을 두 번 다른 컴퓨터에서도 여러 번 다운로드했기 때문에 이것은 매우 이상합니다. 동일한 오류가 있습니다. 아마 우리 인터넷 캐시가 간섭 했나 보지? – ProfK

0

사실 .VSIX 파일은 실제로는 .ZIP 파일입니다. 이름을 변경하고 안에 무엇이 있는지보십시오. 어쩌면 그냥 손상된 다운로드 문제일까요? 나는이 링크 http://visualstudiogallery.msdn.microsoft.com/d0d33361-18e2-46c0-8ff2-4adea1e34fef/ 자신을 시도하고 잘 작동하는 것.

+0

이름을 바꿀 때 파일이 열리 며 내용을 검토 할 수 있습니다. 동일한 결과로 여러 다운로드를 시도했습니다. 이것은 정말 재미있는 문제입니다. – ProfK

+0

@ProfK - .vsix를 두 번 클릭 해 보셨습니까? 똑같은 일을하는거야? 내 레지스트리 (HKEY_CLASSES_ROOT \ VisualStudio.Launcher.vsix \ Shell \ Open \ Command)에서 .vsix는 "C : \ Program Files (x86) \ Common Files \ Microsoft Shared \ MSEnv \ VSLauncher.exe"프로그램에서 처리됩니다. " % 1 ", 아마도 거기에 문제가 있습니까? 어쩌면 VS 2010 –

+0

수리를 시도 할 수 있지만 설치 프로그램이 잘된 것 같습니다. 전동 공구에 문제가 있음을 알게 된 후 최근에 다른 확장 프로그램을 설치했습니다. – ProfK