繁体   English   中英

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

[英]How to add source file (.cs) to resources (.resx) in a pre-build event?

简单甚至可能吗?

原因 :按照我的其他问题并使用这种方法 ,现在,我想简单地将源文件嵌入资源中,以便可以在应用程序运行时将其复制到temp文件夹中-并将应用程序保留为单个文件。

我认为使用预构建事件是最好的方法。 如果是这样,将如何做?

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

我最近在为.NET控件开发示例套件时遇到了同样的问题 ,该套件必须在应用程序中显示其自己的示例源代码。

我最终采用的方法如下。

  1. 我创建了一个批处理脚本(在预构建中运行)以将/ Examples / *下的所有代码文件复制到解决方案Resources / 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

希望这可以帮助!

事实证明,每次构建解决方案时,我都不需要(重新)添加源文件!

当我手动添加它后,它成为资源上的“文本”文件-可以使用Properties.Resources.SourceCode (具有名为“ SourceCode.cs”的文件)轻松地以字符串形式访问它。 是的,由于资源属性“ Persistence”:文件在编译时已链接,因此会自动更新。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM