c# – 如何在预构建事件中将源文件(.cs)添加到资源(.resx)?

它简单甚至可能吗?

原因:在我的other question之后并使用this approach,现在我想简单地将源文件嵌入到资源中,以便在应用程序运行时将其复制到临时文件夹 – 并将应用程序保存为单个文件.

我假设使用预构建事件是执行此操作的最佳方法.如果是这样,它会怎么做?

编辑:我要求在构建之前添加它,因为我还假设如果我手动添加一次然后更改代码后它将不会自动更新.

最佳答案 我最近经历了
this same issue,为.NET控件开发了一个示例套件,它必须在应用程序中显示自己的示例源代码.

我最终得到的方法如下.

>我创建了一个批处理脚本(在预构建中运行),将/ Examples / *下的所有代码文件复制到解决方案Resources / ExamplesSrc / *中的另一个文件夹中
>然后我将所有这些文件包含在csproj中的Resources / ExamplesSrc / *下并保存.
>下一步是我将Resources / ExamplesSrc / *下的所有文件设置为嵌入资源,并将更改提交给SVN.我没有将示例(生成)提交给SVN,只修改了csproj和批处理文件.

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

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

希望这可以帮助!

点赞