C# 在Roslyn编写的汇编中包含嵌入式资源

C# 在Roslyn编写的汇编中包含嵌入式资源,c#,embedded-resource,roslyn,C#,Embedded Resource,Roslyn,我正在尝试将一个嵌入式资源包含到使用Roslyn编译的dll中。我找到了一些帮助我走上正轨的东西 但是,当我使用以下代码创建dll时: const string resourcePath = @"C:\Projects\...\Properties\Resources.resources"; var resourceDescription = new ResourceDescription( "Resources.resources",

我正在尝试将一个嵌入式资源包含到使用Roslyn编译的dll中。我找到了一些帮助我走上正轨的东西

但是,当我使用以下代码创建dll时:

const string resourcePath = @"C:\Projects\...\Properties\Resources.resources";
var resourceDescription = new ResourceDescription(
                    "Resources.resources",
                    () => File.OpenRead(resourcePath),
                    true);

var result = mutantCompilation.Emit(file, manifestResources: new [] {resourceDescription});   
我发现它将通过我为项目创建的所有单元测试,除了那些依赖于资源文件的测试

我得到的错误如下所示:

System.Resources.MissingManifestResourceException ... Make sure "[Project].Properties.Resources.resources" was correctly embedded or linked into      
assembly "[Project]" at compile time, or that all the satellite assemblies required are loadable and fully signed.
dll应该是经过签名的,当它由roslyn发出时,它会给出正确的公钥。此外,Resource.resx直接包含在我的项目的Properties文件夹中


我非常感谢任何人能提供的帮助。

好的,当我在寻找答案时,我遇到了一个评论,在他添加名称空间之前,资源流是空的

所以在添加名称空间之后,我得到了如下结果

const string resourcePath = @"C:\Projects\...\Properties\Resources.resources";
var resourceDescription = new ResourceDescription(
                "[namespace].Resources.resources",
                () => File.OpenRead(resourcePath),
                true);

var result = mutantCompilation.Emit(file, manifestResources: new [] {resourceDescription}); 

这与您的预期完全一样。

编辑了我的问题,以反映我所做的更多研究。当我尝试按照您在第一段中提供的链接进行操作时,我得到“您无权执行此操作”。我想您不记得这是怎么回事了吧?