在Roslyn编写的汇编中包含嵌入式资源
本文关键字:包含 嵌入式 资源 汇编 Roslyn | 更新日期: 2023-09-27 18:29:51
我正试图将一个嵌入的资源包含到我正在使用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});
运行完全符合您的预期。