Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 尝试安装Visual Studio 2010生产力增强工具时出错_Visual Studio_Visual Studio 2010_Productivity Power Tools - Fatal编程技术网

Visual studio 尝试安装Visual Studio 2010生产力增强工具时出错

Visual studio 尝试安装Visual Studio 2010生产力增强工具时出错,visual-studio,visual-studio-2010,productivity-power-tools,Visual Studio,Visual Studio 2010,Productivity Power Tools,我在两台不同的机器上进行了尝试,并多次尝试下载,但每当我尝试在VS 2010 Premium(10.0.30139.1 RTMRel)中安装Productivity Power Tools扩展时,我都会收到错误“该文件不是有效的VSIX包”。搜索结果显示,只有一两个人遇到过此问题。我如何着手诊断这个问题 编辑:为了响应下面Aaron的建议,我运行了代码,结果如下: at MS.Internal.IO.Zip.ZipIOLocalFileDataDescriptor.ParseRecord(Bin

我在两台不同的机器上进行了尝试,并多次尝试下载,但每当我尝试在VS 2010 Premium(10.0.30139.1 RTMRel)中安装Productivity Power Tools扩展时,我都会收到错误“该文件不是有效的VSIX包”。搜索结果显示,只有一两个人遇到过此问题。我如何着手诊断这个问题

编辑:为了响应下面Aaron的建议,我运行了代码,结果如下:

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

我已经下载了几次该文件,每次都有相同的结果,这表明我的文件系统或
打包
库存在一些不同或错误。

A.VSIX文件实际上是一个.ZIP文件。尝试重命名它,看看里面有什么。也许这只是一个损坏的下载问题?我自己也尝试过这个链接,它似乎工作得很好。

我是为Visual Studio 2010编写VSIX/扩展管理器的团队的开发人员,所以我可能可以在这里提供帮助。VSIX文件是一个OPC容器(基本上是一个带有一些额外约束的zip文件)。正如您所料,我们使用托管OPC API打开文件(即.NET中的System.IO.Packaging命名空间)。只有在调用ZipPackage.Open失败时,才会出现此错误消息

您是否可以尝试将以下代码编译到计算机上的C#控制台应用程序(针对.NET 4.0)中,并查看结果如何?您还需要向WindowsBase添加程序集引用。如果这里有bug,我们当然想知道更多

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();
        }
    }
}

当我重命名文件时,它会正常打开,我可以检查其内容。我试过几次下载,结果都是一样的。这是一个非常有趣的问题。@ProfK-你试过双击.vsix吗?它也在做同样的事情吗?从我的注册表(HKEY\U CLASSES\U ROOT\VisualStudio.Launcher.vsix\Shell\Open\Command)中,.vsix由以下程序处理:“C:\program Files(x86)\Common Files\Microsoft Shared\MSEnv\VSLauncher.exe”“%1”,可能有问题吗?也许你可以尝试修复VS 2010thanks,但是安装程序看起来不错-在我注意到电动工具的问题后,我最近用它安装了其他扩展。谢谢@Aaron。此代码引发FileFormatException:文件包含损坏的数据。我已将堆栈跟踪添加到我的问题中。您能否验证您的下载是否已损坏?我看到当前版本的ProPowerTools.vsix(版本10.0.20318.14)的MD5校验和为cdd55a9d8ac33a69217c9d79a17690ac。您可以使用Microsoft的FCIV工具在计算机上获取校验和。好的,散列是不同的,所以我删除了.visx并再次下载了它,散列现在是一样的,它可以工作了。这是非常奇怪的,因为我以前多次下载该文件,甚至在两台不同的机器上,都有相同的错误。也许我们的网络缓存干扰了什么?