【问题标题】:Opening XML file located in addin folder打开位于插件文件夹中的 XML 文件
【发布时间】:2012-07-23 20:41:59
【问题描述】:

在 VSTO Excel 中添加代码:

Dim XMLDoc As XElement = XElement.Load("XMLFile1.xml")

生成 FileNotFound 错误消息(“找不到文件 'C:\Users\doug\Documents\XMLFile1.xml'.”)它正在“我的文档”文件夹中查找,但XML 文件位于该项目的 VS Projects 文件夹中。 我已将 XML 文件的“复制到输出目录”属性设置为“始终复制”。当我更改代码以包含 XML 文件的完整路径时,代码可以正常工作。

另外,如果我在 Windows 控制台或其他类型的项目中包含上述代码,它会正常运行。我只在 Excel 插件中得到它。 以上适用于 VSTO 2008/Excel 2003 和 VSTO 2010/Excel 2010。

【问题讨论】:

    标签: .net excel vsto


    【解决方案1】:

    当您使用相对路径时,当前目录 (Environment.CurrentDirectory) 用于解析该路径。对于 VSTO 插件,它会自动设置为用户文档文件夹。但是对于控制台应用程序,该值设置为与可执行文件相同的文件夹,这就是您遇到不同行为的原因。

    如果您的文件将部署到与您的 VSTO 外接程序程序集相同的文件夹,您可以使用 (AppDomain.CurrentDomain.BaseDirectory) 构建文件的完整路径。

    例如,在 C# 中:

    string filename = "XMLFile1.xml";
    
    string path = Path.Combine(
        AppDomain.CurrentDomain.BaseDirectory,
        filename);
    
    XElement.Load(path);
    

    【讨论】:

    • @João,这太棒了。不知道你是如何找到这个宝石的,因为我整天都在玩,找不到这个 VSTO 问题的答案。你的回答很到位!非常感谢!
    • 我制作的所有 VSTO 解决方案都使用 Environment.CurrentDirectory 获取工作目录,直到昨天一直有效,我首先将其视为 VS 错误,因为它是相对环境变量。我试图以多种方式更改 VS 工作目录......没有成功。非常感谢@João
    【解决方案2】:

    你也可以使用:

    Path.GetDirectoryName(Assembly.GetExecutingAssembly().CodeBase)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-07-21
      • 2018-01-30
      • 2014-05-03
      • 2011-09-14
      • 2019-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多