【问题标题】:C# File Location ConnundrumC# 文件位置难题
【发布时间】:2010-02-19 19:56:27
【问题描述】:
我在 WCF 应用程序中有一个描述依赖关系的 xml 文件。它在服务外观构造函数运行时加载,并且在单独测试应用程序时效果很好。我们单独的 Web 测试应用程序的设置方式是不同 (mvc) 项目中的端点 - 因此相对路径与我们需要加载的 xml 文件不同。问题是从两个项目中加载该文件的最佳方法是什么(这样当您单独运行第一个项目时它会加载该文件,但是当该 dll 在第二个项目中加载时它仍然可以找到 xml 文件) ?
【问题讨论】:
标签:
c#
asp.net
asp.net-mvc
wcf
【解决方案1】:
您可以将其复制到输出目录。您可以在 Visual Studio 中通过右键单击文件、选择属性并将“复制到输出目录”更改为“始终复制”来执行此操作。
在运行时,您将能够在两个项目的当前目录中找到该文件。
【解决方案2】:
试试Server.MapPath
示例:
Server.MapPath(@"~\App_Data\menudata.xml")
然后您可以将文件放置在相对于您的网站/网络服务的根目录的任何位置。
【解决方案3】:
我尝试了“复制到输出”,但没有成功 - 由于某种原因,我的根路径不在输出路径所在的位置(我之前认为)......所以要从其他开发人员设置这个项目中抽象出任何头痛我这样做了:
var _assembly = System.Reflection.Assembly.GetExecutingAssembly();
XDocument xdoc = XDocument.Load(new StreamReader(_assembly.GetManifestResourceStream("TheNamespace.Api.TheFile.xml")));
这当然要求文件是嵌入式资源。