打开位于addin文件夹中的XML文件

时间:2010-03-13 18:24:27

标签: .net excel vsto

在VSTO Excel中添加代码:

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

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

此外,如果我将上述代码包含在Windows控制台或其他类型的项目中,则它可以正确运行。我只是在Excel Addin中获取它。 以上适用于VSTO 2008 / Excel 2003和VSTO 2010 / Excel 2010。

2 个答案:

答案 0 :(得分:13)

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

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

示例,在C#中:

string filename = "XMLFile1.xml";

string path = Path.Combine(
    AppDomain.CurrentDomain.BaseDirectory,
    filename);

XElement.Load(path);

答案 1 :(得分:1)

您也可以使用:

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