我目前正在c#的visual studio中编写一个项目。 项目的完整路径是:
"C:\TFS\MySolution\"
我有一个我需要在执行期间加载的文件。让我们说文件路径是
"C:\TFS\MySolution\Project1\NeedtoLoad.xml"
我不想编写硬编码的完整路径,并希望以动态方式获取路径。
我使用以下行:
var path = Directory.GetCurrentDirectory();
我找到的每个方法和上面的代码行都会得到以下路径的问题:
"C:\TFS\MySolution\Project1\bin\Debug"
我需要的是
"C:\TFS\MySolution\Project1\"
所以我可以连接
NeedtoLoad.xml
答案。
当然我能做到:
path.Substring(0, path.IndexOf("bin\\Debug"));
但它并不那么优雅。
在您说问题是重复之前 请再次阅读这个问题,因为我没有找到任何可以做到这一点。
答案 0 :(得分:3)
您可以使用Directory.GetParent
及其Parent
成员
string path = Directory.GetParent(Directory.GetCurrentDirectory()).Parent.FullName;
将升级路径树并返回"C:\TFS\MySolution\Project1"
。
答案 1 :(得分:0)
如果该文件是项目的一部分,则应确保在构建时将其复制到项目输出中。
在解决方案资源管理器中选择文件,然后转到Visual Studio(F4)中的属性窗格。选择内容'作为“构建”动作'。现在,在构建解决方案时,文件将被复制到输出目录(bin / Debug或bin / Release)。
答案 2 :(得分:0)
如果xml是项目的静态部分(在运行时没有覆盖它),那么最好将它包含在你的dll中。
只需从dll资源加载它,例如
var asm = Assembly.GetCallingAssembly();
using (var stream = asm.GetManifestResourceStream(resource))
{
var reader = new StreamReader(stream);
return reader.ReadToEnd();
}