简单甚至可能吗?
为什么:关注我的other question并使用this approach,现在我想简单地将源文件嵌入资源中,这样我就可以将其复制到临时文件夹了应用程序正在运行 - 并将应用程序保存为单个文件。
我假设使用预构建事件是执行此操作的最佳方法。如果是这样,它会怎么做?
编辑:我要求在构建之前添加它,因为我还假设如果我手动添加一次然后更改代码后它将不会自动更新。
答案 0 :(得分:1)
在开发.NET控件的示例套件时,我最近经历了this same issue,该控件必须在应用程序中显示自己的示例源代码。
我最终采用的方法如下。
我创建一个批处理脚本(在预编译运行),以所有的代码的文件复制在/实施例/ *在溶液的另一个文件夹资源/ ExamplesSrc / *
然后我将所有这些文件包含在csproj中的Resources / ExamplesSrc / *下并保存。
下一步是我将Resources / ExamplesSrc / *下的所有文件设置为嵌入资源,并将更改提交给SVN。我没有将示例(生成)提交给SVN,只修改了csproj和批处理文件。
当开发人员签出的效果是,他们(!)上的所有资源图标(他们不是在磁盘上,但的csproj一直在寻找它们),但只要他们建立生成的文件出现,一切都好。这种方法也适用于构建服务器(Team city),示例套件现在可以通过嵌入式资源加载和浏览自己的代码。
你应该注意一个警告。 VS2010中有一个怪癖(显然是设计)。如果嵌入式资源中包含“.cs”(即任何代码文件!),则无法使用Assembly.GetManifestResourceStream()从程序集加载它。要解决此问题,所有源文件都在批量复制步骤中从* .Xaml.cs重命名为* .Xaml.c.txt,从* .cs重命名为* .c.txt
希望这有帮助!
答案 1 :(得分:1)
结果我每次构建解决方案时都不需要(重新)添加源文件!
当我在资源上成为“文本”文件时手动添加它 - 我可以使用Properties.Resources.SourceCode
轻松访问 作为字符串 名为“SourceCode.cs”的文件。是的,它自动更新,因为资源属性“持久性”:文件在编译时链接。