我尝试部署使用Excel-DNA工具构建的Excel加载项。
加载项在Visual Studio中运行时效果很好,但是,当我尝试从其他地方打开打包的.xll文件时,如Govert(Excel DNA的创建者)建议的那样,将不会加载插件功能区。激活“插入错误消息”后,我收到非明确的消息:对GetCustomUI()的调用失败。就是这样。
所以我有两个问题:
感谢您的帮助,我完全被卡住了,我需要在未来几天内将插头寄出:-(
如@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();
}