确定一个项目';的解决方案文件位置
本文关键字:解决方案 位置 文件 项目 一个 | 更新日期: 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()
就足够了,你不需要通过给定类型来加载整个程序集。