Visual Studio C#相对路径,即使找到正确的路径,也可以搜索两个路径



我正在使用Visual Studio开发用于Windows的桌面应用程序。我正在使用WPF为UI编程。

我已经谷歌搜索了一个答案,但尚未找到答案。很可能是因为我不完全知道实际问题是什么。

我遇到了一个问题,我正在尝试访问文件夹资源中的文件(c: users myname projects myproject projectName resources xml test.xml(使用此代码:

XElement xmlFromFile = XElement.Load(@"....resourcesxmltest.xml");

问题是找到该文件,并且可以通过XMLFromFile变量访问XML,但是该程序还搜索

D:Program Files (x86)Microsoft Visual Studio2017Enterpriseresourcesxmltest.xml

如果我尝试此操作:

也会发生同样的事情。
static string codePath = Directory.GetParent(Directory.GetParent(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)).FullName).FullName;
FileLog log = new FileLog(codePath + "\logs\log.txt");
log.Log("Test")

codepath指的是类文件所在的目录,Filleog是一个只需使用file.appendalltext(path,string(登录文件的类。该代码给出了相同的错误,但是路径是:

C:UsersMyNameAppDataLocalMicrosoftVisualStudio15.0_919b9cb1DesignerShadowCachelogslog.txt

,但此内容还将输入字符串(测试(写入正确的位置。那么,如果有效的话,为什么这是一个问题呢?虽然在这里正常工作,但问题是WPF并没有像通常一样给我预览UI,但可能还有其他问题,但我没有知道。预览简单地指出:无法创建"家庭"实例。房屋是WPF USERCORTROL的地方。

所以我的问题是:如何修复代码,以使程序不会在两个地方搜索(如果确实如此(?。

我认为这里发生的事情不是因为程序没有为文件搜索多个位置,而是从不同的位置加载了相对文件搜索的组件。.NET在本文档中描述了一个令人着迷且几乎没有理解的机制来找到组装和加载它,以下内容:https://msdn.microsoft.com/en-us/library/windows/desktop/mss682586(v = vs.8555(.aspx

所以我认为发生了什么事是您在不同的上下文(即使用调试器,设计师等(中检查此行为,并且所使用的组件是从另一个地方加载的,因此可以评估相对文件路径的不同。

所以,如果我是对的,那么您正在追逐阴影。这是您的开发机器上的行为工件,一旦应用程序部署了,它将消失,并且只有一个地方可以找到发布程序集。

最新更新