在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。
答案 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)