C# GetManifestResourceStream()在调试器中返回NULL

C# GetManifestResourceStream()在调试器中返回NULL,c#,.net,visual-studio-2010,debugging,embedded-resource,C#,.net,Visual Studio 2010,Debugging,Embedded Resource,我在我的应用程序中嵌入了一些XML资源,它可以加载XSD文件,但不能加载XML文件。这就是我加载XSD文件的方式 private static XmlSchema LoadXsdResource(string folder, string xsdName) { string filename = string.Format("Namespace.{0}.{1}.xsd", folder, xsdName); using (Stream stream

我在我的应用程序中嵌入了一些XML资源,它可以加载XSD文件,但不能加载XML文件。这就是我加载XSD文件的方式

    private static XmlSchema LoadXsdResource(string folder, string xsdName)
    {
        string filename = string.Format("Namespace.{0}.{1}.xsd", folder, xsdName);
        using (Stream stream = Assembly.GetCallingAssembly().GetManifestResourceStream(filename))
        {
            return XmlSchema.Read(stream, (o, e) =>
            {
                log.Warn(string.Format("Napaka pri parsanju XSD sheme {0}: {1}: {2}", e.Severity, e.Message, filename));
            });
        }
    }
我在其他地方加载XML:

XDocument xdoc = XDocument.Load(Assembly.GetCallingAssembly().GetManifestResourceStream("Namespace.Resources.Oddaja.xml"));
这也可以,但只有在我运行编译的程序集时才可以。当我使用调试器运行它时,我从
GetManifestResourceStream()
得到一个
NullReferenceException

所以我把名字空间搞砸了,对吧?不,我查了又查。名称空间是正确的,如果不是,我将在运行的程序集中遇到异常。(每当发生异常时,我都会记录日志)我还与.NET Reflector进行了双重检查,以查看资源是否真的存在,以及我期望的名称

我还进行了三次检查,确保
构建操作
设置为
嵌入式资源
,但没有任何效果。我提醒您,当我在调试器外部运行exe并且可以打印XML时,它工作正常。但在使用调试器运行时,它返回null,程序崩溃


是什么原因导致
GetManifestResourceStream()
仅在调试时返回null?

问题是我正在从
Main()
运行代码。各国的文件:

返回调用当前执行方法的方法的程序集

调用my
Main()
方法的
程序集
当然是调试器。调试器没有我想要的资源,因此崩溃了。
LoadXsdResource()
方法之所以有效,是因为调用程序集是我的,并且具有我想要的资源

我想要的是:

获取包含当前正在执行的代码的程序集。


如果我把我的代码放在一个类中,这就不会发生。我想我是因为愚蠢而纳税的。

Assembly.GetCallingAssembly()
确实是个问题。调试时,Visual Studio宿主进程调用代码,
yourapp.vshost.exe
。当然,它不包含您的资源


解决方法是项目+属性、调试选项卡,取消选中“启用VisualStudio宿主进程选项”。当然,真正的解决办法是更加注意代码的位置和资源的位置,使
getExecutionGassembly()
成为最可能正确的选择。

当文件名路径错误时,它返回null。它变成了这样的完整路径 System.IO.Stream s=b.GetManifestResourceStream(“TestApp.XML.test.XML”)


上面的示例显示了映射完美路径的最佳方法。

在调试器中运行时,调用程序集是什么?(我会把它作为一个局部变量取出来,然后先检查一下。)是的,乔恩,我刚刚考虑过。因为我愚蠢地从
Main()
调用我的代码,所以调用的程序集就是调试器。我想要
getExecutionGassembly()
。。。总是这些小事花费了我最多的时间。
Nanespace.FileFolderName.xmlfilename.xml
TestingEnvironmentNamespace.Test.test.xml