gpt4 book ai didi

c# - 在 Roslyn 制作的编译中包含嵌入式资源

转载 作者:太空狗 更新时间:2023-10-29 20:16:48 26 4
gpt4 key购买 nike

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

但是,当我使用以下代码创建 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 文件夹中。

如果有人能提供任何帮助,我将不胜感激。

最佳答案

好的,所以当我在寻找答案时,我遇到了 this web page评论说资源流在他添加命名空间之前为空。

所以在添加命名空间后我得到了这样的东西

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});

它的运行完全符合您的预期。

关于c# - 在 Roslyn 制作的编译中包含嵌入式资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26851214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com