F# 中的强命名资源

Tat*_*ice 5 f# resx

按照这篇文章中提供的步骤,我已经成功添加了一个资源文件,并且可以查询我包含的资源,但我必须手动使用该类ResourceManager来获取嵌入的资源 - 例如

let someText = ResourceManager("strings", System.Reflection.Assembly.GetCallingAssembly()).GetObject("SomeText")
Run Code Online (Sandbox Code Playgroud)

在 VB.NET 和 C# 中,这些资源是强命名的。因此,如果我有一个名为“SomeText.txt”的资源文件,我可以在代码中调用它

var someText = MyDefaultNamespace.Properties.Resources.SomeText;
Run Code Online (Sandbox Code Playgroud)

有没有办法让 F# 资源像 C# 和 VB.NET 中那样在 F# 中进行强命名?也许是 t4 文本模板?

jpi*_*son 3

虽然这绝对是一种解决方法,但可以将资源移动到 C# 或 VB.NET 项目中,并将生成的资源类型的访问修饰符更改为 public,以便您可以从 F# 访问它们此处所述从 F# 访问它们。简而言之:

  • 创建C#项目并添加资源(RESX)文件
  • 更改自定义工具ResXFileCodeGeneratorPublicResXFileCodeGenerator
  • 或者:将访问修饰符更改为Public更改 RESX 文件的访问修饰符