none
在VS2010中调试VSTO程序,通过Assembly.GetExecutingAssembly().CodeBase获得的路径有问题 RRS feed

  • 问题

  • 在VS2010中调试VSTO程序时,在程序中使用Assembly.GetExecutingAssembly().CodeBase 获得程序集的位置。我觉得用VS调试,获得的位置应该是在程序代码的Debug或Release文件夹下,可是实际调试时,获得地址是C盘下的路径(就是类似于使用clickonce发布时的安装路径),C:/Users/usename/AppData/Local/Apps/2.0/01OC72D0.53M/8ENDZTHT.3GD/bigd..vsto_15dc3526ab178342_0001.0000_688eef97486809de/Word.AddIn.DLL。
    你们谁碰到过这种情况,怎么才能把路径改回到调试的Debug或Release文件夹下?

    还有使用Application.StartupPath时,获得的路径是office的路径 C:\Program Files (x86)\Microsoft Office\Office14

    • 已编辑 星期 2015年6月11日 2:23
    2015年6月11日 2:21

全部回复

  • 没人遇到过吗?
    2015年6月12日 1:59
  • 你好,

    这个路径确实是ClickOnce的路径,不太明白你的步骤是什么:

    //Get the assembly information
      System.Reflection.Assembly assemblyInfo = System.Reflection.Assembly.GetExecutingAssembly();
                        
      //Location is where the assembly is run from 
      string assemblyLocation = assemblyInfo.Location;
    
      //CodeBase is the location of the ClickOnce deployment files
      Uri uriCodeBase = new Uri(assemblyInfo.CodeBase);
      string ClickOnceLocation = Path.GetDirectoryName(uriCodeBase.LocalPath.ToString());

    以上返回的是什么?



    Barry
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click HERE to participate the survey.

    2015年6月17日 2:36
    版主
  • 您好,感谢您的回复。我再描述一下我的操作过程。

    1、我用VS2010开发了Excel 2010的外接程序AddIn。在程序中运行Assembly.GetExecutingAssembly().CodeBase或者您给的ClickOnceLocation都是正确的,就是bin目录的地址。(例如我的release的bin目录放在D盘,获得的结果就是D盘)

    2、然后我将bin目录复制到其他目录,比如C盘,双击bin目录中的.vsto文件安装后。此时打开Excel,执行上述的代码获得的路径就是clickonce的路径。但是理论上,我的bin目录在C盘,获得的应该是C盘的路径吧。(我电脑上有一个其他的Excel Addin项目,这个将bin目录拷贝到C盘时,按上面的步骤获得的就是C盘的目录,所以我不知道是不是有什么设置之类的)

    不知道您是否遇到过这样的情况,谢谢!

    2018年5月25日 8:15