![](/img/trans.png)
[英]How to open <visualStudioProject>.sln TXT file in visual studio 2012
[英]open file from folder in visual studio 2012
我的桌面上有一个文件夹,里面有文件。 我将其复制到解决方案的文件夹中,在解决方案资源管理器中,我将该文件夹引用到了解决方案中。 但是,我无法使用相对路径打开该文件夹中的文件。
在解决方案资源管理器中可以看到,来自cs文件的相对路径为“ ../FolderIAdded/blabla”。 但是在Windows资源管理器中,路径当然是不同的:
Solutionfolder
- SolutionFolder.sln
- Solutionfolder.v11.suo
- SolutionFolder
-- bin
-- obj
-- Properties
-- TheFolderIAdded
-- App.config
-- Form1.cs
-- etc.
在这里,它将是“ FolderIAdded / blabla”
我必须在哪里放置该文件夹?
我的目标:我希望能够使用相对路径从c#代码中的该文件夹中打开文件。
您假设程序在源代码所在的目录中运行。 事实并非如此。 根据您的配置,您的程序将从Solutionfolder \\ bin中的目录执行。
一种可能的解决方案是在构建项目时将文件复制到输出目录。
另一种选择是在编译时将文件嵌入到应用程序的程序集中,尽管这样可以防止在部署后对其进行编辑。 为此,将“构建操作”设置为“嵌入式资源”,然后可以使用Assembly
类的GetManifestResourceStream
方法访问它们。 您需要提供的文件名将从项目结构中的路径派生,因此在您的示例中,文件名将为“ TheFolderIAdded.Filename.ext”。
是的,那是一个点,而不是反斜杠。
假设将文件嵌入到要读取它们的代码所在的同一程序集中,则代码将类似于
var assembly = Assembly.GetExecutingAssembly();
using (var stream =
assembly.GetManifestResourceStream("TheFolderIAdded.Filename.ext"))
using (var reader = new StreamReader(stream)) {
string fileContents = reader.ReadToEnd();
}
我认为从.cs文件写入相对路径不是一个好主意。 更好地根据应用程序的执行位置构建路径 :一个示例,网络上还有很多其他东西: 如何在.NET控制台应用程序中获取应用程序的路径?
(您的应用程序不在解决方案的根文件夹中运行,但位于.exe文件所在的位置。例如,在调试桌面应用程序时,它通常从[solution folder] / bin / debug /运行)
然后确保将要打开的文件属性复制到输出目录设置为始终 复制或如果更新则复制 。 (在解决方案资源管理器中右键单击该文件,然后单击“属性”以确保可以访问它。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.