2012-07-18 41 views
1

在Visual Studio(VB.NET)中,我想打开一个文件并将内容读入一个字符串。当文件位于磁盘上的已知位置时很容易,因为您可以将其引用为C:\ Windows \ foo.txt或其他任何文件。有没有什么办法根据它们在解决方案中的位置来引用文件?例如,MySolution \ MyProject \ MyFolder \ foo.txt。要读取的文件将是一个SQL文件,因此将不会有任何代码对象用于处理。是否可以在代码中引用项目文件?

我使用了一大堆不同的解决方案,它们存储在磁盘上的不同位置,所以我真的不想直接处理文件系统。有任何想法吗?

+0

你可以使用应用程序路径! – undone 2012-07-18 15:53:11

回答

1

如果您转到解决方案中文件的文件属性,您会注意到其中一个选项是“复制到输出目录”。您需要将其设置为“始终复制”或“如果更新则复制”。一旦你对所有相关的文件进行了设置并重新构建项目,你会注意到所有这些文件将被复制到bin\Debugbin\Release文件夹中(作为构建过程的一部分),作为构建过程的一部分。现在,在您的应用程序中,您可以假定它们将与您的应用程序位于同一目录中。

+0

谢谢!如果这样做,它会使写入SQL查询变得更好。 – MrEff 2012-07-18 20:13:49

1

Dim s as string = System.IO.Directory.GetCurrentDirectory将返回可执行文件的目录。 如果您始终通过IDE或build文件夹运行此操作,这将是MySolution/MyProject/bin /(Debug或Release)。 然后System.IO.Directory.GetParent(s)两次应该得到你的项目文件夹路径。

+0

我刚要问这个......太糟糕了我只能标记一个答案 – MrEff 2012-07-18 20:14:19

+1

这是一种方法,但由于当前目录可以更改,所以使用程序集路径更安全(例如'Assembly.GetEntryAssembly( ).Location')。 – 2012-07-18 20:22:48

相关问题