亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

打包的 Excel DNA .xll 文件無法加載功能區

打包的 Excel DNA .xll 文件無法加載功能區

PHP
紅顏莎娜 2024-01-20 15:51:49
我嘗試部署使用 Excel-DNA 工具構建的 Excel 加載項。從 Visual Studio 運行時,該加載項工作正常,但是,當我嘗試從其他地方打開打包的 .xll 文件時,按照 Govert(Excel DNA 的創建者)的建議,功能區中的插件無法加載。激活插件錯誤消息后,我收到非顯式消息:對 GetCustomUI() 的調用失敗。就是這樣。所以我有兩個問題:有沒有辦法獲取有關加載錯誤插件的更多詳細信息,以便了解調用失敗的原因(這將是調查的良好開端)?我懷疑錯誤來自配置文件/資源/圖標,這些文件/資源/圖標無法正確打包到 xll 文件中。我的 AddIn.dna 文件包含每個引用的 dll 的語句Reference Path="XXX.dll" Pack="true" ,但我應該聲明資源嗎?還有配置文件?
查看完整描述

2 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

我用 try/catch 塊包圍了 GetCustomUI() 方法重寫,并將異常記錄到文本文件中。這使我能夠訪問插件啟動時引發的異常。

而且,最重要的是,問題是我有一個額外的 JSON 配置文件,打包的 XLL 沒有考慮到該文件,似乎沒有直接的方法可以通過 DNA 文件包含它。

將外部文件設置為嵌入資源并從清單資源流中讀取它。

在我的特定情況下,我將它用于 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();

? ? }


查看完整回答
反對 回復 2024-01-20
?
aluckdog

TA貢獻1847條經驗 獲得超7個贊

如果您要重寫該方法GetCustomUI,請添加try...catchon GetCustomUI,然后查看異常詳細信息。


[ComVisible(true)]

public class RibbonController : ExcelRibbon

{

    public override string GetCustomUI(string RibbonID)

    {

        try

        {

             // ...

        }

        catch(Exception ex)

        {

             MessageBox.Show(ex.ToString());

        }

    }


    // ...

}


查看完整回答
反對 回復 2024-01-20
  • 2 回答
  • 0 關注
  • 275 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號