2012-02-23 76 views
3

我在尝试将文本文档硬编码到我的C#表单应用程序时遇到问题。基本上我有网页HTML,我想填充到一个文本框。我可以使用流式阅读器轻松做到这一点,或者永远花费在字符串中。环顾我可以添加到我的解决方案的不同元素是一个文本文件。引用文本文件Visual Studio C#

所以我正在寻找一种简单的方法来告诉我的应用程序读取文本文件或类似的东西,并把它放在文本框中。到目前为止,我无法弄清楚如何引用我添加到表单的文本文件。

我想这样编码到exe文件作为默认文件。我不想要一个外部文件,因此它不能被编辑,所以程序变得轻松便携。

有关如何在内部嵌入此文件并像访问类或其他东西一样访问它的任何建议?

回答

7

上点击右键获取流到该项目的项目并单击属性。你会得到通常的屏幕左边有很多标签。点击“资源”。你可以添加字符串和其他东西,但你也可以添加文本文件。

将顶部的下拉菜单更改为文件,然后点击“添加资源”。浏览到一个文本文件,将其命名。这会将文件添加到您的程序集中。不要太激动,因为这可以反编译,所以不要存储任何秘密消息。

您可以在.net站点,mvc站点,控制台应用程序等中执行此操作。下面的代码是控制台应用程序样式以保持简单。当然,这只是一个文本文件,但它为您提供了使用资源的基础知识。您可以将其扩展为其他类型的文件,包括第三部分内容,如报告模板,格式文件,xml以及其他可能笨拙总是尝试的东西,以确保您在提升代码时包含在您的配置中。缺点是,你必须重新编译才能做出改变。

using System; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 

namespace ConsoleApplication1 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      var output = Properties.Resources.helloword; 
      Console.WriteLine(output); 
      Console.ReadLine(); //just so you can see it 
     } 
    } 
} 
+0

哇,我希望我可以绿色检查更多的回应。我做了这个,因为我一步一步地进行文本显示。这个社区很棒。我最大的问题是我不知道我在找什么概念。这很完美。谢谢。 – eatumup 2012-02-23 03:24:01

6

您正在描述的概念被称为embedding resources

您可以嵌入各种文件作为资源;图标,图像,XML,甚至纯文本文件,并从代码中引用它们,像这样的例子:可用

internal string GetFromResources(string resourceName) 
{ 
    Assembly assem = this.GetType().Assembly; 
    using (Stream stream = assem.GetManifestResourceStream(resourceName)) 
    { 
     using (var reader = new StreamReader(stream)) 
     { 
      return reader.ReadToEnd(); 
     } 
    } 
} 

有吨的文件,当你知道你要找的内容是这样的:http://msdn.microsoft.com/en-us/library/0c6xyb66.aspx

+0

第一行将帮助我很长一段时间。谢谢你。当你不知道你在寻找什么时,很难搜索。非常感谢你! – eatumup 2012-02-23 03:25:23

2

我做了类似的事情。

生成.html添加到您的项目,设置属性生成操作嵌入的资源

然后,您可以通过

Assembly.GetExecutingAssembly().GetManifestResourceStream("your.namespace.yourFile.html");