[英]Get relative path of XML File located in another project but Same Solution
我找到了許多有關查找XML文件的文章和問題,但它們都是針對Same Project的。
假設我的項目結構如下所示:
ABC <------ Solution
|--ABC.Data <------ Project
| |--XMLFiles <-------Folder
| |--AA.xml
|
|--ABC.Client <------ Project
| |--ViewModels <-------Folder
| |-MainViewModel.cs
現在,我想使用XDocument.Load(....path.....)
在MainViewModel.cs中加載AA.xml文件。
那么,我該怎么path
呢?
您將必須從ABC.Data和ABC.Client父級上正在執行的程序集文件夾中移回。 例如執行的程序集位於ABC.Client-> ViewModels-> Bin-> Debug
XDocument.Load("../../../../../ABC.Data/ABC.Data/AA.xml");
但是實際上我看不到它的用途,因為在部署應用程序時,項目層次結構就不會存在。 如果您有需要由多個程序集訪問的XML文件,只需將該XML文件放在Execution文件夾中即可。 所有程序集都將能夠訪問它。
您還可以制作一個單獨的程序集,該程序集將AA.xml文件數據公開給所有其他項目以供其他項目讀取和寫入,方法是將該程序集的引用添加到這些項目中。 我更喜歡這種方法。
您需要一些設置才能使您的方案工作
首先右鍵單擊xml文件(或您要訪問的任何文件),然后將“復制到輸出目錄”設置為“始終復制”,然后在您構建或發布該文件的文件夾結構時(對於您的情況為AA.xml)在bin或publish(web project)文件夾上創建,您只需要編寫此代碼
var path = HostingEnvironment.ApplicationPhysicalPath+"\\bin";//path to you bin
如果您使用的是winforms
var path = Application.StartupPath;//path to you bin
最后
var fullpath=path+"\\XMLFiles\\AA.xml";
XDocument.Load(fullpath) ;
但是更好的方法是創建一個Helper類,該類將為您的應用程序獲取xml內容,例如
public static class XMLHelpers
{
public static XMLDocument GetXML(string KEY)
{
string file="";
switch(KEY)
{
case "AA": file=Path.Combine(file,"AA.txt");
break;
}
var xmldoc=new XMLDocument();
xmldoc.Load(file);
return xmldoc;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.