C# 在Roslyn编写的汇编中包含嵌入式资源
我正在尝试将一个嵌入式资源包含到使用Roslyn编译的dll中。我找到了一些帮助我走上正轨的东西 但是,当我使用以下代码创建dll时: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",
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});
这与您的预期完全一样。编辑了我的问题,以反映我所做的更多研究。当我尝试按照您在第一段中提供的链接进行操作时,我得到“您无权执行此操作”。我想您不记得这是怎么回事了吧?