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

在VSTO Excel插件中的代码是:

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

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

另外,如果我将上面的代码包含在Windows控制台或其他types的项目中,它将正确运行。 我只是在Excel地址中得到它。 以上是VSTO 2008 / Excel 2003和VSTO 2010 / Excel 2010的情况。

当您使用相对path时,将使用当前目录( Environment.CurrentDirectory )来parsing该path。 在VSTO加载项的情况下,这将自动设置为用户文档文件夹。 但是,对于一个控制台应用程序,值设置为与可执行文件相同的文件夹,这就是为什么你遇到不同的行为。

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

例如,在C#中:

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

你也可以使用:

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