C# .NET 中 FileStream 的替代方案

Mik*_*yer 5 .net c# asp.net filestream

在 Visual Studio 环境中,项目 A (ASP.NET) 在我的解决方案中引用项目 B (C#),如下所示:

Solution
??Project B
? ??data.txt
? ??process.cs  (a class BB with static initialization new FileStream("data.txt"))
? Project A (referencces Project B)
  ??bin
  ? ??data.txt (copied from project B each time project B changes)
  ??Controllers
    ??mycontroller.cs (references the class BB)
Run Code Online (Sandbox Code Playgroud)

问题是,当我运行应用程序时,工作目录是C:\Program Files (x86)\IIS Express\,这样的data.txt不能从编译版本的阅读process.cs这是bin。

暂时为了解决这个问题,我手动复制data.txt到了这个文件夹,但是这个方案不可行。注意,对 B 的更改必须与依赖于 B 的其他项目保持一致,这些项目并非都是 ASP.NET 项目。

我应该进行哪些更改,以便data.txt可以从我的项目中访问,而无需依赖我将data.txt文件复制到IIS Express目录?

我想将我的程序移植到 Azure Online,但我不能依赖此方法。感谢您的帮助。

其他链接答案:

  • 这个答案是 ASP.NET - 特定的,我不能添加 server.MapPath 因为项目不知道它。
  • 这个答案引用了项目路径,但没有给我一个关于如何修改它们的提示。

Vik*_*pta 2

“请注意,对 B 的更改必须与依赖于 B 的其他项目保持一致,这些项目并不都是 ASP.NET 项目”

不确定在依赖于项目 B 的其他项目的背景下连贯性对您意味着什么......但我想到了以下选项 -

  1. 将 data.txt 作为资源嵌入到为项目 B 生成的程序集中。项目 B 然后可以将该文件作为资源读取(假设构建后不需要修改文件内容)请参阅 ResourceManager 类以处理嵌入的资源组件。 http://msdn.microsoft.com/en-us/library/system.resources.resourcemanager(v=vs.110).aspx

  2. 如果它适用于项目 B 的所有客户端,请扫描子目录中的文件.. 这更加 hackish.. 但实际上取决于项目 B 的场景。