我有一些脚本存储在我标记为嵌入式资源的文件中。我将每个文件嵌套在相关的.cs
文件下。遗憾的是,出于某种原因,当您以这种方式嵌套文件时,嵌入的资源名称会丢失文件扩展名。这意味着在运行时我无法识别哪些嵌入式资源是脚本还是非脚本。我该怎么办?
我试过的一件事不起作用:获取ManifestResourceInfo
对象,该对象具有FileName
属性。不幸的是,此属性为null
。
我尝试的另一件事是将扩展加倍。 (例如:filename.ext.ext
)。这不起作用,第一个.
之后的所有内容仍然缺失。
我尝试用非常不同的东西命名资源,并注意到资源名称甚至没有改变。 它似乎是基于“依赖于”文件为嵌套的嵌入式资源文件生成资源名称,在这种情况下,它只是一个常规的.cs
文件。我尝试将.cs
文件的扩展名加倍到filename.extrastuff.cs
,但资源名称仍未更改。它坚持在第一个.
之后剪切所有内容。
不,好的,我现在看到它实际上是在.cs
文件中定义的 type 之后命名资源,而不是任一文件的文件名。这就是扩展没有区别的原因。这意味着我无法使用任何文件名来帮助查找资源。
答案 0 :(得分:4)
我发现文件丢失扩展名的原因是因为出于某种原因嵌套文件时,VS在类型之后而不是在文件之后命名资源
我发现允许我在嵌套时仍有扩展名的唯一方法是手动编辑splunk-timedata-field
文件并添加.csproj
标记,这样您就可以覆盖资源名称。
LogicalName
不幸的是,没有IDE支持,我正在使用的FileNesting扩展也不支持编写此标记。
为每个文件执行此操作过于繁琐,因此我不必依赖文件扩展名,而是在脚本文件中添加标识符,将标识符标识为脚本。
最终我意识到,在我的情况下,我正在验证单元测试中的脚本文件,我可以简单地扫描文件系统而不是资源清单,并完全避免这个问题。