[英]How to programatically update AssemblyInfo.cs as a Pre-Build event (Visual Studio / msbuild)
[英]How to add source file (.cs) to resources (.resx) in a pre-build event?
我最近在为.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
希望这可以帮助!
事实证明,每次构建解决方案时,我都不需要(重新)添加源文件!
当我手动添加它后,它成为资源上的“文本”文件-可以使用Properties.Resources.SourceCode
(具有名为“ SourceCode.cs”的文件)轻松地以字符串形式访问它。 是的,由于资源属性“ Persistence”:文件在编译时已链接,因此会自动更新。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.