我认为这个问题对你们大多数人来说可能是微不足道的,但不知何故我找不到答案......所以,我在这个解决方案中有一个Visual Studio 2008解决方案foo和一个项目栏。在我的酒吧项目中,我有一个名为baz的目录,它看起来像这样:
foo dir
|
+-> bar dir
|
+-> baz dir
|
+-> asd file
现在我想在bar-project中打开我的“asd文件”但是需要“asd文件”的确切路径,我该如何找到它?我只是尝试了“baz \ asd”,但它不起作用。
谢谢!
Ĵ
答案 0 :(得分:10)
您想在C#应用程序中在运行时打开bar
- 项目中的文件吗?有几种方法可以实现这一点,我会给你最简单的。
asd
的属性
Content
Copy always
(或Copy if newer
)然后,您可以在C#中按如下方式引用该文件(假设您的程序不会将当前工作目录从可执行目录更改):
using (StreamReader reader = new StreamReader(@"baz\asd"))
{
// ...
}
其他方式涉及using embedded resources,这不是最简洁的解决方案。
答案 1 :(得分:2)
如果你的意思是在运行时打开,程序实际上在bar \ bin \ debug(或bar \ bin \ release)中运行,所以你需要考虑到这一点。
通常我会做类似的事情:
#if DEBUG
filename = @"..\..\baz\asd";
#else
filename = @"baz\asd";
#endif
答案 2 :(得分:2)
文件的相对位置是解决方案目录。因此,要在VS IDE中打开它,可以在“命令”窗口或“标准”工具栏上的“查找”文本框中键入(Ctrl-D):
>open bar\baz\asd
如果您想在运行时执行此操作,则需要使用您的应用程序分发源文件,因为没有任何保证它将在解决方案树附近的任何位置执行。
如果你想从VS加载项中执行此操作,我确信有一个表示解决方案的类,您可以使用它来枚举其中的项目,然后枚举bar项目中的文件条目。
答案 3 :(得分:0)
将一个简单的Target添加到Build文件中可能会更好(项目文件 - 用于C#的csproj)。在文本模式下打开csproj文件并添加:
如果你对发布感兴趣,你需要加倍努力,但我想,你现在不要求它 - 所以,保持简单。