打包的Excel DNA .xll文件未加载功能区

问题描述 投票:0回答:1

我尝试部署使用Excel-DNA工具构建的Excel加载项。

加载项在Visual Studio中运行时效果很好,但是,当我尝试从其他地方打开打包的.xll文件时,如Govert(Excel DNA的创建者)建议的那样,将不会加载插件功能区。激活“插入错误消息”后,我收到非明确的消息:对GetCustomUI()的调用失败。就是这样。

所以我有两个问题:

  • 是否有任何方法可以获取有关loadingerror插件的更多详细信息,以了解为什么调用失败(这将是调查的一个好的开始)?
  • 我怀疑该错误来自配置文件/资源​​/图标,该文件不会正确打包到xll文件中。我的AddIn.dna文件包含每个引用的dll的语句Reference Path =“ XXX.dll” Pack =“ true”,但是我应该声明资源吗?和配置文件?

感谢您的帮助,我完全被卡住了,我需要在未来几天内将插头寄出:-(

c# excel-dna
1个回答
0
投票

如@CaioProiete所指出,我用try / catch块将GetCustomUI()方法覆盖,并记录了异常到文本文件中。这使我可以访问插件启动时引发的异常。

并且,最重要的是,问题是我有一个额外的JSON配置文件,打包的XLL并没有考虑它,似乎没有直接方法可以通过DNA文件包含它。

解决方法已在here中进行了说明:将外部文件设置为嵌入式资源,然后从清单资源流中读取它。

在我的特定情况下,我将其用于DI服务提供商,并按以下步骤构建它:

private IServiceProvider BuildServiceProvider()
    {
        var serviceCollection = new ServiceCollection();

        //Configuration
        ConfigurationBuilder builder = new ConfigurationBuilder();
        builder.SetBasePath(Directory.GetCurrentDirectory());

        var assembly = Assembly.GetExecutingAssembly();
        var resourceName = "otherconfig.json";
        using (Stream stream = assembly.GetManifestResourceStream(resourceName))
        using (StreamReader reader = new StreamReader(stream)) {
            string result = reader.ReadToEnd();
            string tempPath = Path.GetTempFileName();
            File.WriteAllText(tempPath, result);
            builder.AddJsonFile(tempPath);
        }

        IConfiguration config = builder.Build();
        serviceCollection.AddSingleton(config);

        //other dependency injection service registration

        return serviceCollection.BuildServiceProvider();
    }
© www.soinside.com 2019 - 2024. All rights reserved.