2012-04-25 74 views
4

它简单甚至可能吗?如何将源文件(.cs)添加到预生成事件中的资源(.resx)?

为什么:下面我other question,并使用this approach,现在我想简单地嵌入源文件的资源,这样我就可以在应用程序运行时将其复制到临时文件夹 - 和保持应用程序作为一个单一的文件。

我假设使用预生成事件是完成此操作的最佳方法。如果是这样,它将如何完成?

编辑:我想咨询一下,因为建我也认为它不会,如果我添加它手动一次自动更新,然后更改后的代码之前添加。

回答

1

原来我不需要每次构建解决方案时重新添加源文件!

当我手动添加它,一旦它变成资源“文本”文件 - 我可以很容易地访问它为使用Properties.Resources.SourceCode(其命名为“SourceCode.cs”的文件)的字符串。是的,自从资源属性“Persistence”被自动更新:文件在编译时被链接。

+0

这是否工作,如果源文件更新? – 2012-04-26 11:21:51

+1

@ Dr.AndrewBurnett-Thompson是的,它工作得很好。我甚至尝试过使用空的.cs文件,然后在创建资源引用后开始编码。代码在运行时每次都在那里。当然,您只需要保存代码文件。 – 2012-04-26 12:18:54

+1

好吧,让我弄清楚这一点,你有一个在Project/*下的代码文件,你可以将相同的源文件添加到resx资源,然后可以作为字符串访问?太棒了。我可能会转换我的代码使用批处理文件:)顺便说一句我的silverlight所以可能有一个问题,但值得一试。感谢您分享您的最新答案 – 2012-04-26 12:44:40

1

我最近通过this same issue为.NET控件开发了一个示例套件,该套件必须在应用程序中显示自己的示例源代码。

我结束的方法如下。

  1. 我创建了一个批处理脚本(预编译运行)的所有代码文件拷贝在/例子/ *解决方案中的资源/ ExamplesSrc/*

  2. 我遂把所有其他文件夹这些文件在csproj的Resources/ExamplesSrc/*下并保存。

  3. 下一步是将Resources/ExamplesSrc/*下的所有文件设置为嵌入式资源并将更改提交给SVN。我没有提交SVN的例子(生成),只是修改后的csproj和批处理文件。

当开发人员签出的是,他们有(!)上的所有资源图标(他们不是在磁盘上,但的csproj一直在寻找它们),但只要他们建立生成的文件效果出现了,一切都很好。这种方法也适用于构建服务器(Team city),而示例套件现在可以通过嵌入式资源加载和浏览自己的代码。

一个警告你应该知道。在VS2010中有一个怪癖(显然是由设计)。如果嵌入的资源中包含“.cs”(即任何代码文件!),则无法使用Assembly.GetManifestResourceStream()从程序集加载它。为了解决这个问题,所有源文件都在批量复制步骤中从* .Xaml.cs重命名为* .Xaml.c.txt,从* .cs重命名为* .c.txt

希望这有助于!

+0

哦,我没有使用版本控制,它只是一个小型的学习/培训应用程序,但我希望将它发送给我的大学教授和同学,因此准备好代码是一个优点。还是)感谢你的建议! – 2012-04-26 02:06:57

+0

然后你需要知道,如果你的批处理文件错误,它会破坏你的源文件。确保你在做这个之前做好备份! – 2012-04-26 06:50:22

相关问题