确定一个项目';的解决方案文件位置

本文关键字:解决方案 位置 文件 项目 一个 | 更新日期: 2023-09-27 17:59:17

我们有一个if语句,它试图确定特定文件夹的位置。根据我们是在本地运行(调试)还是在客户端的机器上运行(发布),我们会在不同的地方查找它。

#if (DEBUG)
        firefoxPath = @"..'..'..'Includes'XulRunner'";
#else
        if (System.Diagnostics.Debugger.IsAttached) {
            firefoxPath = @"..'..'..'Includes'XulRunner'";
        }
        else {
            firefoxPath = Path.Combine(Application.StartupPath, @"XulRunner'");
        }
#endif

但是,当我们尝试为引用此设计器的项目运行设计器时,它无法解析路径,因为设计器的工作目录是:C: ''Program Files(x86)''Microsoft Visual Studio 12.0''Common7''IDE。如果文件夹的路径不正确,则项目将无法正常运行,并且设计器在尝试加载时崩溃。

我们可以使用它来确定我们当前是否通过设计器执行:

bool isInDesignMode = LicenseManager.UsageMode == LicenseUsageMode.Designtime || System.Diagnostics.Debugger.IsAttached == true;

我的问题是,我们如何通过设计器确定解决方案的路径,以便正确解析所需文件夹的路径?

确定一个项目';的解决方案文件位置

您总是可以在整个项目中获得某个程序集的实例,访问Assembly.CodeBase属性并使用它:

string assemblyPath = new Uri(Assembly.GetAssembly(typeof(SomeTypeWithinYourProject)).CodeBase).AbsolutePath;
// At least you've the Bin'Debug or Bin'Release. Now you can assume some conventions
// and get project's directory. 
string binDir = Path.GetDirectoryName(binDir);

我不知道你的确切情况,但也许Assembly.GetExecutingAssembly()就足够了,你不需要通过给定类型来加载整个程序集。