Visual Studio c#相对路径,程序即使在找到正确的路径时也搜索两条路径
我正在使用visual studio为windows开发桌面应用程序。我正在用C#编写使用WPF的UI。Visual Studio c#相对路径,程序即使在找到正确的路径时也搜索两条路径
我用Google搜索了一个答案,但还没有找到任何答案。很可能是因为我不完全知道实际问题是什么。
我已经运行到哪里我试图访问一个文件在文件夹资源 问题(C:\用户\ MYNAME \项目\ MyProject的\项目名\资源\ XML \的test.xml) 使用此代码:
XElement xmlFromFile = XElement.Load(@"..\..\resources\xml\test.xml");
的问题是,该文件被发现,XML可以通过xmlFromFile变量进行访问,但该程序还可以搜索,如果我尝试这个
D:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\resources\xml\test.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指的是类文件所在的目录,FileLog是一个使用File.AppendAllText(path,string)简单地记录到文件的类。 这段代码给出了同样的错误,但路径是相反:
C:\Users\MyName\AppData\Local\Microsoft\VisualStudio\15.0_919b9cb1\Designer\ShadowCache\logs\log.txt
但是这一次也写输入的字符串(测试),以在正确的位置正确的文件。那么,为什么这是一个问题,如果它的工作?虽然它在这里可以正常工作,但问题在于WPF并没有像往常一样给我预览UI,可能还有其他问题,但没有我知道的。预览只是说明:无法创建“主页”的实例。 Where Home是WPF用户控件。
所以我的问题是:如何修复代码,使程序不在两个地方搜索(如果确实是这样)?
这里发生了什么我相信并不是程序没有在多个地方搜索一个文件,而是从不同的地方加载相关文件搜索的程序集。 .NET有一个迷人的,很少理解的机制来查找一个程序集并加载它在本文档中描述:https://msdn.microsoft.com/en-us/library/windows/desktop/ms682586(v=vs.85).aspx
所以我认为正在发生的是你正在不同的上下文中检查这种行为(即使用调试器,在设计者等中),并且正在使用的程序集从不同的地方加载,因此以不同方式评估相对文件路径。
所以,如果我是对的,那么你正在追逐一个影子。这是您的开发计算机上的行为人为现象,一旦应用程序部署完毕,这些行为就会消失,并且只有一个地方可以找到发布程序集。
谢谢你的回答。我很高兴听到它不应该有任何其他副作用。你知道有什么方法可以让WPF显示预览,即使出现错误吗?这并不重要,我可以运行应用程序,但它会很方便。 –