出于某种原因,在 VS2010 中,我无法将任何文件嵌入到程序集中。这些文件的Build Action属性设置为应有的Embedded Resource ,但是在执行程序集时它没有找到任何资源。例如下面的测试代码:
string[] list = System.Reflection.Assembly.GetExecutingAssembly().GetManifestResourceNames();
string msg = (list.Length > 0) ? "Full" : "Empty";
MessageBox.Show(msg);
总是显示“ Empty ”,因为GetManifestResourceNames()总是返回一个空列表。
此问题会影响使用 nettiers 的项目,在这种情况下,不方便将存储过程包含到数据库中,因此必须从Procedures.xml 文件中获取它们,顺便说一句,该文件在Build Action = Embedded Resource之后自动设置类生成,当然,当一个函数试图从中获取任何 SQL 脚本时,程序就会失败。
我还创建了几个测试项目,尝试嵌入 xml 和 gif,但始终没有成功。
更新:问题似乎只针对C#。我在VB.Net中复制了测试项目,并且文件确实被嵌入了。我注意到在输出窗口中,在 C# 的情况下,编译器命令行不包含/resource选项(应该在后面跟着要嵌入的文件的名称),而对于 VB 的情况,它确实出现了.
我应该检查C#的任何全局设置或配置文件吗?(该项目的构建选项在那里没有什么奇怪的)
有谁知道可能发生的事情以及如何解决这个问题?