Windows Azure项目错误 CctSharedPackage没有正确加载。

问题描述 投票:22回答:8

我打开一个解题文件,本来工作正常,却出现了这个神秘的错误。

'CctSharedPackage'没有正确加载。

这个项目是一个Windows Azure 2.1项目,上周工作没有问题,但是从那时起到重启,它再也不能在Visual Studio 2012中成功加载。这种情况发生在一台确实安装了Windows Azure SDK 2.1的机器上(该项目上周确实工作正常)。

错误指出,要检查c:Users/{user}/AppData/Roaming/Microsoft/VisualStudio/11.0/ActivityLog.xml文件以了解更多信息。

在这个文件中写着 "无法找到组件Microsoft.Azure.Diagnostics ver 2.1"。

visual-studio-2012 azure projects-and-solutions
8个回答
34
投票

看到已经安装了Windows Azure SDK 2.1,我重新下载了安装程序,并去运行它,要求它重新安装或修复安装。由于安装的是Web平台安装程序,它没有提供这些选项。此时我决定必须卸载SDK才能从AddRemove Programs中重新安装。

当我进入AddRemove Programs时,我看到那里有Windows Azure Libraries for .NET - v1.8和Windows Azure Authoring Tools - v1.8的安装。我删除了这两个安装,然后项目能够成功加载。


9
投票

这似乎是安装程序的问题。 重新安装是一种选择,但你可以通过在GAC中注册你的汇编,用简单的命令行来解决这个问题。

C:\Program Files (x86)\Windows Azure Tools\Visual Studio 11.0>gacutil /i .\Microsoft.VisualStudio.WindowsAzure.Diagnostics.dll

4
投票

我没有安装1.8 SDK。 我相信这是一个与.Net 3.5有关的windows更新,它可能已经破坏了我的安装。 要修复我所做的就是在Windows 8中打开资源管理器,并从功能区中选择 "卸载或更改程序 "选项。

搜索Azure,当有一个选项 "修复",我修复了程序。 已修复


4
投票

我也遇到了类似的问题("CctSharedPackage "没有正确加载)。在我的例子中,以管理员身份启动Visual Studio解决了这个问题。


3
投票

我今天也遇到了这个问题,但幸运的是,只要重启Visual Studio 2012就解决了这个问题。至少试一次以确定 :-) !


3
投票

我也遇到了这个问题。重新安装SDK似乎没有帮助,而且重新安装Visual Studio听起来太痛苦了,所以我决定弄清楚是什么原因导致了这个错误。

我使用了另一个Visual Studio实例,并将其连接到调试违规的Visual Studio实例。我无法看到确切的错误发生在哪里,但我能够看到异常发生在哪个库中,并且可以使用.NET Reflector查看源代码,以了解它的作用。

在启动时,Microsoft.Cct.CctSharedPackage库会遍历所有的Azure SDK,以找出你的计算机上安装了哪些SDK。

我最后写了一个控制台应用程序来模拟启动时的情况,看看是否能找到问题所在。所有的类都是内部的,所以我必须使用反射来访问它们。

在我的电脑上,原来是Azure SDK 1.6出了问题。SDK已经安装好了,但TargetAzureLibraries属性却显示为null。我卸载了那个SDK,就纠正了这个问题。

下面是控制台应用程序。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WindowWidth = 240;

            // The Microsft.Cct.AssemblyResolver does this:
            /*
        private IEnumerable<IAzureToolsVersionInfo> GetInstalledSDKsByProductVersionDesc(IServiceProvider serviceProvider) => 
            (from knownProduct in AzureToolsVersionInfoUtilities.GetAllProducts()
                where knownProduct.TargetAzureSDK.IsSDKInstalled() && knownProduct.TargetAzureLibraries.IsLibrariesInstalled()
                orderby knownProduct.ProductVersion descending
                select knownProduct)
            */
            // Duplicate this logic using reflection to find the SDK install that is broken.

            var asm = System.Reflection.Assembly.LoadFile("C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\Extensions\\Microsoft\\Windows Azure Tools\\Microsoft.VisualStudio.WindowsAzure.Common.2.8.dll");
            var typ = asm.GetType("Microsoft.Cct.ProductVersionInfo.AzureToolsVersionInfoConstants");
            //Console.WriteLine(typ.ToString());
            var allMethods = typ.GetFields(BindingFlags.Static | BindingFlags.Public).Select(it => it.Name).ToArray();
            allMethods = allMethods.Where(it => it.StartsWith("WAT") && it.Length == 5).OrderBy(it => it).ToArray();
            foreach (string version in allMethods)
            {
                var fld = typ.GetField(version, System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.Public);
                dynamic val = fld.GetValue(null);
                var azTypeInfo = asm.GetType("Microsoft.Cct.ProductVersionInfo.AzureToolsVersionInfo");
                bool isSdkInstalled = false;
                bool isLibrariesInstalled = false;
                Dictionary<string, string> sdkProperties = new Dictionary<string, string>();
                Dictionary<string, string> libProperties = new Dictionary<string, string>();

                // Get the SDK reference
                var targetAzureSDK = azTypeInfo.GetProperty("TargetAzureSDK").GetValue(val);
                Type targetAzureSDKProp = targetAzureSDK.GetType();
                var methodNames = targetAzureSDKProp.GetMethods().Select(it => it.Name).ToArray();
                var sdkIsInstalledMethod = targetAzureSDKProp.GetMethods().FirstOrDefault(it => it.Name == "IsSDKInstalled");
                isSdkInstalled = (bool)sdkIsInstalledMethod.Invoke(targetAzureSDK, null);
                var sdkProps = targetAzureSDKProp.GetProperties().ToArray();
                foreach (var prop in sdkProps)
                {
                    try
                    {
                        sdkProperties[prop.Name] = string.Concat(prop.GetValue(targetAzureSDK));
                    }
                    catch (Exception ex)
                    {
                        sdkProperties[prop.Name] = "Error:" + ex.Message;
                    }
                }

                if (isSdkInstalled)
                {
                    // Get the Azure libraries reference
                    var targetAzureLibraries = azTypeInfo.GetProperty("TargetAzureLibraries").GetValue(val);
                    Type targetAzureLibrariesProp = targetAzureLibraries.GetType();
                    var isInstalledMethod = targetAzureLibrariesProp.GetMethods().FirstOrDefault(it => it.Name == "IsLibrariesInstalled");
                    isLibrariesInstalled = (bool)isInstalledMethod.Invoke(targetAzureLibraries, null);
                    var props = targetAzureLibrariesProp.GetProperties().ToArray();
                    foreach (var prop in props)
                    {
                        try
                        {
                            libProperties[prop.Name] = string.Concat(prop.GetValue(targetAzureLibraries));
                        }
                        catch (Exception ex)
                        {
                            libProperties[prop.Name] = "Error:" + ex.Message;
                        }
                    }
                }
                // Output details of this SDK
                Console.WriteLine("{0}, {1}, {2}", version, isSdkInstalled, isLibrariesInstalled);
                Console.WriteLine("\tSDK");
                foreach (var kp in sdkProperties)
                {
                    Console.WriteLine("\t{0} {1}", kp.Key, kp.Value);
                }
                Console.WriteLine("\tLib");
                foreach (var kp in libProperties)
                {
                    Console.WriteLine("\t{0} {1}", kp.Key, kp.Value);
                }
            }
        }
    }
}

0
投票

通过控制面板卸载了所有以2012年10月为终点的Windows Azure条目。重新打开我的解决方案后,我得到一个转换项目目标的对话框(截图)。

Azure upgrade


0
投票

我赞同关闭然后再打开的选项。在加载一个项目时得到了这个错误,一个星期后离开。重新启动后就消失了。所以至少试一次。

© www.soinside.com 2019 - 2024. All rights reserved.