【发布时间】:2017-01-12 18:36:10
【问题描述】:
按照this SO post中提供的步骤,我已经成功添加了一个资源文件,可以查询我已经包含的资源,但是我必须手动使用ResourceManager类来获取嵌入的资源——比如
let someText = ResourceManager("strings", System.Reflection.Assembly.GetCallingAssembly()).GetObject("SomeText")
在 VB.NET 和 C# 中,这些资源是强命名的。因此,如果我有一个名为“SomeText.txt”的资源文件,我可以在代码中调用它
var someText = MyDefaultNamespace.Properties.Resources.SomeText;
有没有办法让 F# 资源强命名,就像它们在 C# 和 VB.NET 中一样,在 F# 中?可能是 t4 文本模板?
【问题讨论】:
-
在您的 C#(或 VB)项目中,右键单击
SomeText并单击“转到定义”。看看它是怎么做的? -
+1。这将我带到 Resources.Designer.cs 文件(其属性包括自定义工具
ResXFileCodeGenerator),它似乎将所有资源都包含为具有 get 访问器的自己的静态属性。在 F# 中,我的 Resources.resx 没有 Designer.fs 文件,并且 Resources.resx 文件没有“自定义工具”选项。想法? -
想法:手动编写
Resources.designer.fs文件。 -
谢谢@CaringDev,这似乎是我正在寻找的东西,但它提出了一个全新的问题 - 如果文件位于输出目录中,它似乎只适用于资源文件。我正在查看源代码,看看它是否可以在运行时提取作为我的程序集的嵌入式资源的 resx 文件。关于 ResXProvider 的讨论并不多