2017-02-03 183 views
-1

我使用Visual Studio 2015年我有一個XML文件在我的解決方案Xml/file.xmlC#的Visual Studio 2015年加載XML

我寫道:

XElement root = XElement.Load(@"Xml\file.xml"); 

file.xml屬性是:

Build Action = Content 
Copy to Output Directory = Copy Always 

在調試模式下它可以工作,但是當我公開解決方案時,它搜索文件:

c:\windows\system32\inetsrv\Xml\file.xml 

什麼是解決方案?

感謝

+0

你可以[確定實際路徑(取決於這是什麼類型的應用程序)](http://stackoverflow.com/questions/6041332/best-way-to-get-application-folder-path) – stuartd

+1

當你發佈,你正在改變你的exe的位置。您的根目錄也更改爲這個新位置。將文件移動到其查找的路徑,或爲該文件設置[絕對路徑](http://stackoverflow.com/questions/4796254/relative-path-to-absolute-path-in-c)。 – Ethilium

回答

0

如果文件大小不是很大,我個人通常會做這樣的事情作爲嵌入資源這樣XML包含你的編譯代碼裏面,你不需要加載外部文件....

套裝屬性:

Build Action = EmbeddedResource 

,然後使用代碼是這樣的:

// adapt as needed 
string yourResourceName = "YourAssembly.Xml.File.Xml"; 

// load the embedded resource 
Stream resourceStream = Assembly.GetExecutingAssembly().GetManifestResourceStream(yourResourceName); 

// if resource is found 
if (resourceStream != null) { 
    tXElement root = XElement.Load(resourceStream); 
    // do whatever you want to do .... 
}